2011-11-03 22 views

Respuesta

8

El método (GET/POST/HEAD etc) que está tratando de utilizar en ese URL no es compatible con la aplicación. ¿Estás seguro de que la API espera que uses el método que estás usando en esa URL?

+0

sí, es en el API. puedes ver que su ejemplo de agregar está roto en su api ahora: http://jsonpdb.appspot.com – mkoryak

6

La causa más común es usar el "obtener" en contra de la "publicación" incorrecta para la respuesta. Verifique lo que se envía y que el método correcto aparezca en su controlador.

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

Otro problema común es tener la sección principal de despacho analizar las direcciones URL, pero luego no suministra en el GET/POST/borrar

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

La expresión regular no ha () en ella ... eso es una parámetro de la ruta URL como: /upload/filename

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

el suministro de un enlace al código sería de gran ayuda.

2

Sé que este es un hilo viejo, pero no encontré una respuesta satisfactoria a la pregunta para mis propias necesidades. Especialmente si usted está manejando una respuesta AJAX, es posible que desee permitir explícitamente solicitudes OPCIONES mediante la comprobación de ellos en el envío de su manejador webapp2 personalizado:

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();