post接受json tornado_tornado的同步API编写方法实现get/post/delete请求+tornado在post请求(重印)中获取JSON数据的一个例子,Tornado,写法,...

下面的实验主要来自[1][2],但是对实验2的代码进行了修改,修改过程参考了[3]

#---------------------------------------------------实验1-------------------------------------------------------------------

from tornado.web import Application, RequestHandler

from tornado.ioloop import IOLoop

class HelloHandler(RequestHandler):

def get(self):

self.write({'message': 'hello world'})

def make_app():

urls = [("/", HelloHandler)]

return Application(urls, debug=True)

if __name__ == '__main__':

app = make_app()

app.listen(3000)

IOLoop.instance().start()

python test1.py

**************************************************************

GET请求测试:

GET请求

结果

:

#---------------------------------------------------实验2-----------------获取post请求中的json数据--------------------------------------------------

from tornado.web import Application, RequestHandler

from tornado.ioloop import IOLoop

import json

items = ['csdn']

class TodoItems(RequestHandler):

def get(self):

self.write({'items': items})

class TodoItem(RequestHandler):

def post(self):

# items.append(self.request.body)

print("-----------------进入post----------------")

print(self.request)

print("--------------self.write之前------------------")

jsonbyte = self.request.body

jsonstr = jsonbyte.decode('utf8') #解码,二进制转为字符串

print('Json字符串:', jsonstr)

jsonobj = json.loads(jsonstr) #将字符串转为json对象

# self.write({'message': self.request.body})

self.write(jsonobj)

def make_app():

urls = [

("/", TodoItems),

("/api/item/", TodoItem)

]

return Application(urls, debug=True)

if __name__ == '__main__':

app = make_app()

app.listen(3000)

IOLoop.instance().start()

python test2.py

**************************************************************

GET请求测试:

浏览器打开:

http://127.0.0.1:3000/

GET请求结果:

**************************************************************

POST请求测试:

curl -H "Content-Type: application/json" -X POST -d '{"user_id": "123", "coin":100, "success":1, "msg":"OK!" }' "http://127.0.0.1:3000/api/item/"

POST请求结果:

{"user_id": "123", "coin": 100, "success": 1, "msg": "OK!"}

#----------------------------------------实验3-----------------------------curl发送delete请求---------------------------------------------------------

from tornado.web import Application, RequestHandler

from tornado.ioloop import IOLoop

import json

items = []

class TodoItems(RequestHandler):

def get(self):

self.write({'items': items})

class TodoItem(RequestHandler):

def post(self, _):

items.append(json.loads(self.request.body))

self.write({'message': 'new item added'})

def delete(self, id):

global items

new_items = [item for item in items if item['id'] is not int(id)]

items = new_items

self.write({'message': 'Item with id %s was deleted' % id})

def make_app():

urls = [

("/", TodoItems),

(r"/api/item/([^/]+)?", TodoItem)

]

return Application(urls, debug=True)

if __name__ == '__main__':

app = make_app()

app.listen(3000)

IOLoop.instance().start()

python test3.py

***********************************************

GET请求测试:

GET请求测试结果:

***********************************************

POST请求测试:

curl -H "Content-Type: application/json" -X POST -d '{"user_id": "123", "coin":100, "success":1, "msg":"OK!" }' "http://127.0.0.1:3000/api/item/342"

POST请求测试

结果

:

{"message": "new item added"}

***********************************************

DELETE请求测试:

curl -v -X DELETE 127.0.0.1:3000/api/item/342

DELETE请求测试结果:

{"message": "Item with id 342 was deleted"}

#---------------------------------------------------------结束--------------------------------------------------------------------------

Reference:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值