Wie erstellen Sie eine RESTful API mit Google App Engine mit Python? Ich habe versucht, Cloud Endpoints zu verwenden, aber die Dokumentation konzentriert sich nicht auf eine REST-konforme API. Gibt es für GAE etwas Ähnliches wie Django-Tastypie?REST-API in Google App Engine + Python?
Antwort
Die RESTful API kann basierend auf der EndPoint API erstellt werden. Es gibt einige Tools können Sie die Dinge einfacher helfen:
appengine Rest-Server (nicht auf Endpunkten)
Drop-In-Server für Google App Engine-Anwendungen, die Ihr Datenmodell mit nicht über eine REST-API macht Extra Arbeit.
https://code.google.com/p/appengine-rest-server/
Ein anderes auf Endpunkte
Durch die Erweiterung der Funktionalität zur Verfügung gestellt von ndb.Model Klasse und die Endpunkte Bibliothek basiert, diese Bibliothek ermöglicht es Ihnen, direkt mit Modellentität zu interagieren in Ihrem API-Methoden anstelle von ProtoRPC-Anforderungen. Zum Beispiel statt:
https://github.com/GoogleCloudPlatform/endpoints-proto-datastore
EDIT1:
schrieb ich einen RESTful API Generator für Endpunkte.
# 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
Großartig! Ich benutze den Appengine Rest Server. Der Authenticator und der Authorizer müssen jedoch manuell implementiert werden.Kannst du mich auf einige Ressourcen für dasselbe verweisen? – theG33k
https://github.com/mevinbabuc/Restify
Es ist ein leichtes Modul, das ich gemacht, die wie eine REST-Schnittstelle für appengine wirkt. Alles, was Sie tun müssten, ist nur die Modelle in ReSTify/models.py zu definieren.
Sie können die Authentifizierung auch einfach hinzufügen, ohne viel zu tun.
Um al was Sie tun müssen, um loszulegen
import webapp2
import ReSTify
application = webapp2.WSGIApplication(
[
('/api/.*', ReSTify.ReST),
],
debug=True)
https://github.com/budowski/rest_gae
ist ich ein vollwertiges REST-API für NDB Modelle über webapp2 erstellt haben. Umfasst die Handhabung von Berechtigungen und vieles mehr.
würde gerne Ihre Meinung hören:
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 <[email protected]>',
'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 <[email protected]>',
'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)
das ist ausgezeichnet! Warum möchten Sie Endpoints nicht nutzen? – wprater
@wprater, https://code.google.com/p/googleappengine/issues/detail?id=9384 dies könnte einer der Gründe sein ... – opensourcegeek
@opensourcegeek Ich habe diese verwendet (https: // github .com/GoogleCloudPlatform/Endpoints-Proto-Datastore), weil ich Endpunkte verwenden wollte, aber diese Bibliothek sieht auch gut aus! – wprater
Versuchen Sie einen Blick auf ProtoRPC Dienste nehmen. Endpunkte sind auf ihnen gebaut und sie sind nicht schlecht zu schreiben. – grim
können Sie Django auf GAE verwenden, damit das direkt für Sie funktioniert. –
können Sie mit vielen verschiedenen Mikro-Frameworks erholsame APIs erstellen. Ich benutze persönlich nicht webapp (2), sondern bobo für diese Art von Anwendung. –