2011-08-05 14 views
14

Jakieś wskazówki, porady dotyczące implementacji API REST na App Engine z Pythonem? Korzystanie z webapp dla samej aplikacji.Python REST frameworks dla App Engine?

Co ja obecnie wiem że mogę:

  • włamać się własne webapp ładowarki do obsługi REST-like URI, ale to wydaje się tracić swoją elegancję dla większych ilości zasobów. Mam na myśli, że to proste, jeśli chodzi o temperature/atlanta, ale nie aż tak bardzo * dla nawet dość prostego /users/alice/address/work (choć należy pamiętać, że nie mówię tego po zaimplementowaniu tego, po prostu spędzając trochę czasu próbując zaprojektować odpowiedni obsługi, więc moja percepcja może być wyłączona).

  • użyj funkcji REST zapewnionej przez jedną z większych frameworku WWW Pythona. Mam pewne niewytłumaczalne współczucie dla web2py, ale ponieważ nie jest ono używane w projekcie, dołączenie go do aplikacji tylko po to, aby zapewnić jakąś funkcjonalność REST, wydaje się być przesadą?

(Huh, wygląda jak nie lubię żadnego z tych podejść Tough.).

Więc oto mi pytaniem: Jakie rady, najlepiej w oparciu o doświadczenia, to masz tu na mnie? Jakie są moje opcje, czy mój pogląd na nie jest poprawny, czy coś przeoczyłem?

Z góry dziękuję.

+2

Jeśli musisz trzymać się 'webapp', możesz użyć [' Serwer odpoczynku Appengine'] (http://code.google.com/p/appengine-rest-server/). ["Interfejs Django Rest"] (http://code.google.com/p/django-rest-interface/) to potężniejsze rozwiązanie, jeśli możesz użyć innej struktury. –

+0

@Paolo Miałem zamiar zasugerować również serwer odpoczynku Appengine, ale po przeczytaniu dokumentacji nie znalazłem żadnych wskazówek na temat złożonego wzorca adresu URL, takiego jak sugerowany przez OP. – systempuntoout

+1

@systempuntoout Masz rację, dlatego też zasugerowałem 'Interfejs Django Rest', ponieważ możesz zdefiniować własne wzorce adresów URL. –

Odpowiedz

10

Miałem podobny problem. Chcąc szybko uzyskać dostęp do mojego DataStore poprzez REST do WebApps.

Znaleziono: AppEngine REST Server.

Do tej pory używałem tego tylko lekko, ale z pewnością wydaje się bardzo przydatne przy niewielkiej ilości pracy. I korzysta z webappa zgodnie z sugestią.

+0

Tylko uwaga: nie obsługuje modelu danych "ndb", ale https://code.google.com/p/appengine-rest-server/issues/detail?id=54 –

6

ProtoRPC jest dołączony do pakietu SDK i jest solidny i aktywnie rozwijany (jakkolwiek eksperymentalny). Chociaż wydaje mi się, że sam kod źródłowy jest nieco zawiły, zestaw funkcji jest całkiem kompletny i został stworzony przez kogoś z doświadczeniem w tworzeniu tego rodzaju biblioteki. Obsługuje transmisję przy użyciu JSON, ProtocolBuffer i formatów zakodowanych w URL.

Ponadto można tworzyć interfejsy API działające po stronie serwera: i po stronie klienta - definiuje on protokół "wiadomość" z implementacjami w języku Python i JavaScript. Użyłem innych "RESTful" bibliotek Pythona, ale żaden inny nie zapewnił tej spójności po wyjęciu z pudełka.

Here is the project page i here is the mailing list.

Edytować: może ich dokumentacji brakuje niektórych słów kluczowych, ale po to, aby było jasne: jednym z celów ProtoRPC jest zapewnienie solidnych podstaw do tworzenia usług REST.

+0

Co ProtoRPC ma wspólnego z interfejsem API Rest? – systempuntoout

+0

@systempuntoout: Wszystko. :) ProtoRPC może służyć do tworzenia usług REST. – moraes

+0

Czy ProtoRPC może podejmować różne akcje w oparciu o zastosowaną metodę HTTP? – maligree