V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tornado Documentation
http://www.v2ex.com/tornado/
Tornado on GitHub
https://github.com/facebook/tornado/
Tornado Gists
http://tornadogists.org/
p8p8
V2EX  ›  Tornado

tornado 里,如果写 API 的话。。。

  •  1
     
  •   p8p8 · 2014-11-03 05:54:04 +08:00 · 8084 次点击
    这是一个创建于 3660 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我需要写一个用户注册的API接口,这个接口没有GET方式,只支持POST,

    例如:

    class Signin(BaseHandler):

    def get(self):
    #这里跳转至post()么?
    post()

    def post(self):


    还是怎么写才合理啊?
    5 条回复    2014-11-05 17:55:01 +08:00
    banbanchs
        1
    banbanchs  
       2014-11-03 07:51:54 +08:00
    你不要重写get方法就行了,别人用GET访问这个接口会自动raise HTTPError(405)

    https://github.com/tornadoweb/tornado/blob/master/tornado/web.py#L208
    shadowind
        2
    shadowind  
       2014-11-03 08:10:45 +08:00
    不写get,只写post就可以了~~
    Shared
        3
    Shared  
       2014-11-03 08:34:56 +08:00
    你没明白过弯来,当用 POST 方法访问指定 URL 的时候,router 自然会调用该方法里的 post()
    与 get() 压根不产生任何交集
    JoeShu
        4
    JoeShu  
       2014-11-03 08:38:02 +08:00 via iPhone
    看下basehandler的代码就很明了了,get默认是raise异常的
    shajiquan
        5
    shajiquan  
       2014-11-05 17:55:01 +08:00
    HTTP Method 有很多种:GET / POST / PUT / DELETE / HEAD / OPTION。

    Tornado 支持以上这些方法。在你的 handler class 里,如果你不写那个 def get/post/put/delete 的话,那么这个 handler 就没有实现这种请求方式。

    当 client 请求一个没有实现的方法时,tornado 默认会返回 HTTP 405 Method not allowed 错误,HTTP 级别的。

    你在浏览器里打开一个网址,是请求的这个 handler 的 get 方法,要发起 post/put/delete 等方法时,需要特别处理的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2995 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:44 · PVG 21:44 · LAX 05:44 · JFK 08:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.