2013-10-15 30 views
18

पाइथन के साथ Google App Engine का उपयोग करके एक विश्वसनीय API कैसे बनाएं? मैंने क्लाउड एंडपॉइंट्स का उपयोग करने का प्रयास किया है, लेकिन दस्तावेज़ीकरण एक विश्वसनीय API पर केंद्रित नहीं है। क्या GAE के लिए django-tastypie के समान कुछ है?REST API?

+0

protorpc सेवाओं पर एक नज़र लेने की कोशिश करें। एंडपॉइंट्स उनके ऊपर बनाए गए हैं और वे लिखने में बहुत बुरे नहीं हैं। – grim

+0

आप GAE पर Django का उपयोग कर सकते हैं ताकि यह आपके लिए सीधे काम कर सके। –

+0

आप विभिन्न माइक्रो ढांचे के ढेर के साथ आराम से एपीआई बना सकते हैं। मैं व्यक्तिगत रूप से वेबपैप (2) का उपयोग नहीं करता लेकिन इस तरह के आवेदन के लिए बोबो। –

उत्तर

11

रीस्टफुल एपीआई एंडपॉइंट एपीआई के आधार पर बनाया जा सकता है। वहाँ कुछ उपकरण चीजों को आसान बनाने में मदद कर सकते हैं:

appengine बाकी सर्वर (अंतिम बिंदुओं के आधार पर नहीं)

ड्रॉप-इन Google App Engine ऐप्स जो कोई साथ एक बाकी एपीआई के माध्यम से अपने डेटा मॉडल को उजागर करता है के लिए सर्वर अतिरिक्त काम।

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

एक और एक अंतिम बिंदु

ndb.Model वर्ग द्वारा प्रदान की कार्यक्षमता और अंतिम बिंदुओं पुस्तकालय विस्तार करके पर आधारित है, इस पुस्तकालय आप सीधे में मॉडल संस्थाओं के साथ बातचीत करने की अनुमति देता है आपके ProtoRPC अनुरोधों के बजाय API विधियां। उदाहरण के लिए, के बजाय के लिए:

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

+1

बढ़िया! मैं Appengine आराम सर्वर का उपयोग कर रहा हूँ। लेकिन प्रमाणीकरणकर्ता और प्राधिकरण को मैन्युअल रूप से कार्यान्वित किया जाना है।क्या आप मुझे इसके लिए कुछ संसाधनों के बारे में बता सकते हैं? – theG33k

1

https://github.com/mevinbabuc/Restify

यह एक हल्के मॉड्यूल है कि मैं बनाया है, जो ऐप्लिकेशन इंजन के लिए एक आराम इंटरफ़ेस की तरह काम करता है। आपको बस इतना करना होगा कि केवल ReSTify/models.py में मॉडलों को परिभाषित करें।

आप बिना किसी tweaking के आसानी से प्रमाणीकरण में भी जोड़ सकते हैं।

आरंभ करने के लिए अल आपको क्या करना है

import webapp2 

import ReSTify 

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

https://github.com/budowski/rest_gae

है मैं webapp2 से अधिक NDB मॉडल के लिए एक पूर्ण REST API का बना लिया है। अनुमतियों को संभालने और बहुत कुछ शामिल है।

अपने विचारों को जानकर बहुत खुशी होगी:

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) 
+0

यह उत्कृष्ट है! किसी भी कारण से आप एंडपॉइंट्स का लाभ उठाने का विकल्प नहीं चुनते हैं? – wprater

+0

@ वाटर, https://code.google.com/p/googleappengine/issues/detail?id=9384 यह कारणों में से एक हो सकता है ... – opensourcegeek

+0

@opensourcegeek मैंने इसका उपयोग करके समाप्त किया (https: // github .com/GoogleCloudPlatform/endpoints-proto-datastore), क्योंकि मैं एंडपॉइंट्स का उपयोग करना चाहता था, लेकिन यह लाइब्रेरी भी बहुत अच्छी लगती है! – wprater