发送帖子,手动获取请求到RequestHandler

时间:2016-05-16 14:33:47

标签: python rest post get tornado

我正在尝试使用Tornado创建一个REST Api的请求处理程序。 但我似乎无法找到一种方法来发送请求和/或正确地使用Tornado捕获请求。

我的代码是:

class VersionHandler2(tornado.web.RequestHandler):
    def post(self,*args,**kwargs):
        print "post"
        print kwargs
        print args
        response = { 'version': '3.5.1'}
        x = self.get_argument('query')
        self.write(kwargs)
    def get(self, *args, **kwargs):
        print "GET"
        response = { 'GET': '3.5.1'}
        self.write(response)

if __name__ == '__main__':
    sx = Server(7231,[ (r"/prost/", VersionHandler2),(r"/about/", VersionHandler)])

    sx.startServer()

Get方法正在发送响应,但post方法无法获取发布数据。我尝试使用高级Rest客户端 SENSE ,但没有运气。我试图将数据作为JSON发送,并使用了正确的prfrences并将其作为json发送。

我在ARC中显示的请求正文

Localhost:7231 / Content-Type:application / json 内容长度:39 来源消息

POST /prost/ HTTP/1.1
 HOST: localhost:7231
 localhost: 7231/
 content-type: application/json
 content-length: 39

 {
 "query": [
 "paul"
 ]
 }

此外,是否可以使用GET方法发送JSON查询? 我正在尝试构建类似弹性搜索的东西,并希望使用4种CRUD方法 - >发布,放置,获取,删除并将JSON数据作为查询发送到每个方法。

1 个答案:

答案 0 :(得分:2)

POST请求正文位于self.request.body

如果POST请求来自HTML表单,则self.get_argument(name)将返回HTML表单的命名字段。但是,如果您有一个API客户端将JSON发送到您的服务器,而不是发送表单编码数据,那么您应该使用类似json.loads(self.request.body)的内容。