2011-11-03 69 views

回答

8

的方法(GET/POST/HEAD等),你要對URL中使用不被應用的支持。你確定API期望你使用你在那個URL上使用的方法嗎?

+0

是,其在API。你現在可以看到他們的add的例子已經被破壞了:http://jsonpdb.appspot.com – mkoryak

6

最常見的原因是使用錯誤的'get'和'post'作爲響應。驗證正在發送的內容以及正確的方法出現在您的處理程序中。

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

另一個常見的問題是有主調度部解析的網址,但隨後在get不能提供他們/後/刪除

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

正則表達式存在()在這...這是一個url路徑中的參數如下:/upload/filename

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

向代碼提供鏈接將會有所幫助。

2

我知道這是一條古老的線索,但對於我自己的需求,我沒有找到令人滿意的答案。特別是如果你正在處理Ajax響應,你可能希望通過您的自定義webapp2的處理程序的調度爲他們檢查,以明確允許OPTIONS請求:

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