2011-11-03 18 views

risposta

8

Il metodo (GET/POST/HEAD ecc) che si sta cercando di usare su quel URL non è supportato dalla app. Sei sicuro che l'API si aspetta che tu usi il metodo che stai utilizzando su quell'URL?

+0

sì, la sua nel api. è possibile vedere il loro esempio di aggiunta è rotto sulla loro API ora: http://jsonpdb.appspot.com – mkoryak

6

La causa più comune è l'errato 'get' vs 'post' per la risposta. Verifica cosa viene inviato e che il metodo corretto appare nel gestore.

class MainHander(webapp.RequestHandler): 
    def get(self): 
     ... 
    def post(self): 
     .... 
    def delete(self): 
     .... 

Un altro problema comune è avere la sezione di spedizione principale analizza gli URL, ma poi non li fornisce in get/post/delete

def main(): 
    application = webapp.WSGIApplication(
     [ (r'/upload/([^/]+)?/?', UploadFileHandler), 

L'espressione regolare non ha () in esso ... questo è un parametro nel percorso url del tipo: /upload/filename

class UploadFileHandler(webapp.RequestHandler): 
    def post(self, filename): 
     ... 

Fornire un link al codice sarebbe utile.

2

So che questo è un thread vecchio ma non ho trovato una risposta soddisfacente alla domanda per i miei bisogni. Soprattutto se si sta gestire una risposta AJAX, si consiglia di consentire esplicitamente OPZIONI richieste controllando per loro nella spedizione del vostro gestore WebApp2 personalizzato:

class MyHandler(webapp2.RequestHandler): 
    def __init__(self, request, response): 
     self.initialize(request, response) 

    #The dispatch is overwritten so we can respond to OPTIONS 
    def dispatch(self): 
     self.response.headers.add_header("Access-Control-Allow-Origin", "*") 
     if self.request.method.upper() == 'OPTIONS': 
      self.response.status = 204 
      self.response.write('') 
     else: 
      super(MyHandler, self).dispatch();