¿API REST en Google App Engine + Python?

¿Cómo crear una API RESTful usando Google App Engine con Python? He intentado usar los puntos finales de la nube, pero la documentación no se centra en una API RESTful. ¿Hay algo similar a django-tastypie para GAE?

La API RESTful puede construirse en base a la API de EndPoint. Hay algunas herramientas que pueden ayudarte a hacer las cosas más fáciles:

Servidor de rest de appengine (no basado en puntos finales)

Servidor Drop-in para aplicaciones de Google App Engine que expone su modelo de datos a través de una API REST sin trabajo adicional.

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

Otro está basado en puntos finales.

Al ampliar la funcionalidad proporcionada por la clase ndb.Model y la biblioteca de puntos finales, esta biblioteca le permite interactuar directamente con entidades modelo en sus métodos de API en lugar de solicitudes ProtoRPC. Por ejemplo, en lugar de:

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

EDIT1:

Escribí un generador de API de RESTFul para puntos finales.

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

repo: https://github.com/Tagtoo/endpoints-proto-datastore-rest

https://github.com/budowski/rest_gae

He creado una API REST completa para modelos NDB a través de webapp2. Incluye permisos de manejo y mucho más.

Me encantaría conocer tu opinión:

 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 ', 'subject': 'Verify your email address', 'body_text': 'Click here {{ user.full_name }}: https://stackoverflow.com/questions/19375085/rest-api-in-google-app-engine-python/{{ verification_url }}', 'body_html': 'Click here {{ user.full_name }}' }, verification_successful_url='/verification_successful', verification_failed_url='/verification_failed', reset_password_url='/reset_password', reset_password_email={ 'sender': 'John Doe ', 'subject': 'Please reset your password', 'body_text': 'Reset here: https://stackoverflow.com/questions/19375085/rest-api-in-google-app-engine-python/{{ verification_url }}', 'body_html': 'Click here to reset' }, ) ], debug=True, config=config) 

https://github.com/mevinbabuc/Restify

Es un módulo liviano que hice, que actúa como una interfaz ReST para appengine. Todo lo que tendría que hacer es simplemente definir los modelos en ReSTify / models.py.

También puedes agregarle la autenticación fácilmente sin necesidad de modificar mucho.

Para empezar todo lo que tienes que hacer es

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