2011-04-24 16 views
7

Jestem szalenie zielony dla WSGI na Google App Engine (GAE).WSGI - Ustaw typ zawartości na JSON

Jak ustawić typ zawartości na JSON? To, co mam tak daleko:

class Instructions(webapp.RequestHandler): 
    def get(self): 
     response = {} 
     response["message"] = "This is an instruction object" 

     self.response.out.write(json.dumps(response)) 



application = webapp.WSGIApplication([('/instructions', Instructions)], 
            debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

Dodatkowo buduję kilka usług relaksującego, nic zbyt skomplikowana. Używałem restletów, kiedy pracowałem w JAVA. Czy istnieje lepsze ramy do wykorzystania niż WSGI? Jedynym powodem, dla którego używam WSGI, jest to, czego użyli w samouczku App Engine.

Dzięki!

+2

Jesteś "szalony zielony"? Słyszę, że to nie jest łatwe. –

+0

Hej Nick, więc starałem się napisać Ci nie dziękuję za odpowiedź na jedno z pytań, które miałem, ale na moje życie nie mogłem znaleźć twojego adresu e-mail –

Odpowiedz

14

Można ustawić właściwą Content-Type z mniej więcej tak:

self.response.headers['Content-Type'] = "application/json" 
self.response.out.write(json.dumps(response)) 

WSGI nie jest szkieletem, ale specyfikacja; aktualnie używany framework to framework webapp.

Nie ma nic wyrafinowanego i specyficznego, jak Restlet po stronie Pythona; jednak za pomocą aplikacji webapp można utworzyć RESTful request handlers za pomocą wyrażeń regularnych zwracających dane JSON/XML, tak jak to robi twój program obsługi.

+0

Fajnie, dzięki za odpowiadając na moje pytanie dotyczące rzeczy REST –

2

Jak każda odpowiedzi HTTP można dodawać ani zmieniać nagłówki:

def get(self): 
    response = {} 
    response["message"] = "This is an instruction object" 

    self.response.headers["Content-Type"] = "application/json" 
    self.response.out.write(json.dumps(response)) 

Więcej tutaj: Redirects, Headers and Status Codes

1

Czy istnieje lepsze ramy się używając niż WSGI?

Spójrz na piramidę (poprzednio nazywane pylony, jeśli widzisz, że wspomniano). Wygląda na to, że byłoby lepiej w twoim przypadku vs django.

Powiązane problemy