REST API в Google App Engine + Python?

Как создать RESTful API с помощью Google App Engine с Python? Я пытался использовать Cloud Endpoints, но документация не фокусируется на RESTful API. Есть ли что-то похожее на django-tastypie для GAE?

RESTful api можно построить на основе EndPoint API. Есть некоторые инструменты, которые помогут вам сделать вещи проще:

сервер отдыха appengine (не основанный на конечных точках)

Drop-in для приложений Google App Engine, которые предоставляют вашу модель данных через REST API без дополнительной работы.

https://code.google.com/p/appengine-rest-server/

Другая основана на конечных точках

Расширяя функциональность, предоставляемую классом ndb.Model и библиотекой конечных точек, эта библиотека позволяет вам напрямую взаимодействовать с объектами модели в ваших API-методах, а не с запросами ProtoRPC. Например, вместо:

https://github.com/GoogleCloudPlatform/endpoints-proto-datastore

EDIT1:

Я написал генератор RESTFul api для конечных точек.

# generate restful api in one line BigDataLab = EndpointRestBuilder(GPCode).build( api_name="BigDataLab", name="bigdatalab", version="v1", description="My Little Api" ) 

РЕПО: https://github.com/Tagtoo/endpoints-proto-datastore-rest

https://github.com/budowski/rest_gae

Я создал полноценный REST API для моделей NDB через webapp2. Включает обработку разрешений и многое другое.

Хотелось бы услышать ваши мысли:

 class MyModel(ndb.Model): property1 = ndb.StringProperty() property2 = ndb.StringProperty() owner = ndb.KeyPropertyProperty(kind='User') class RESTMeta: user_owner_property = 'owner' # When a new instance is created, this property will be set to the logged-in user include_output_properties = ['property1'] # Only include these properties for output app = webapp2.WSGIApplication([ # Wraps MyModel with full REST API (GET/POST/PUT/DELETE) RESTHandler( '/api/mymodel', # The base URL for this model's endpoints MyModel, # The model to wrap permissions={ 'GET': PERMISSION_ANYONE, 'POST': PERMISSION_LOGGED_IN_USER, 'PUT': PERMISSION_OWNER_USER, 'DELETE': PERMISSION_ADMIN }, # Will be called for every PUT, right before the model is saved (also supports callbacks for GET/POST/DELETE) put_callback=lambda model, data: model ), # Optional REST API for user management UserRESTHandler( '/api/users', user_model=MyUser, # You can extend it with your own custom user class user_details_permission=PERMISSION_OWNER_USER, verify_email_address=True, verification_email={ 'sender': 'John Doe <john@doe.com>', 'subject': 'Verify your email address', 'body_text': 'Click here {{ user.full_name }}: {{ verification_url }}', 'body_html': '<a href="{{ verification_url }}">Click here</a> {{ user.full_name }}' }, verification_successful_url='/verification_successful', verification_failed_url='/verification_failed', reset_password_url='/reset_password', reset_password_email={ 'sender': 'John Doe <john@doe.com>', 'subject': 'Please reset your password', 'body_text': 'Reset here: {{ verification_url }}', 'body_html': '<a href="{{ verification_url }}">Click here</a> to reset' }, ) ], debug=True, config=config) 

https://github.com/mevinbabuc/Restify

Это легкий модуль, который я сделал, который действует как интерфейс REST для appengine. Все, что вам нужно сделать, это просто определить модели в ReSTify / models.py.

Вы также можете легко добавить аутентификацию, не задумываясь.

Чтобы начать работу, вы должны сделать это

 import webapp2 import ReSTify application = webapp2.WSGIApplication( [ ('/api/.*', ReSTify.ReST), ], debug=True)