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

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

from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoopclass 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请求测试:

浏览器打开http://127.0.0.1:3000/

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.bodyjsonstr = 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 jsonitems = []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 itemsnew_items = [item for item in items if item['id'] is not int(id)]items = new_itemsself.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请求测试:

浏览器打开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/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:

[1]How to build a REST API in Python with Tornado (part 1)

[2]How to build a REST API in Python with Tornado (part 2)

[3]tornado获取客户端以json字符串提交的数据

Tornado的同步API写法举例实现GET/POST/DELETE请求+Tornado获取post请求中的json数据(转载)相关推荐

  1. 关于vue3的两种API写法——选项API和组合API

    理解什么是选项API写法,什么是组合API写法 Options API 什么是选项API写法:Options API 在vue2.x项目中使用的就是选项API写法 代码风格:data选项写数据,met ...

  2. java json发送文件_关于java:REST API设计在同一请求中将JSON数据和文件发送到api...

    我正在现有应用程序之上创建一个RESTAPI.其中一个特性接受JSON数据以及用户上传的文件. 我不确定如何将同一请求中的文件和JSON数据发送到RESTAPI? 我让JSON部件工作,并使用curl ...

  3. Tornado同步api和异步api混写一例

    代码如下: import tornado.ioloop import tornado.web from tornado.httpclient import HTTPClient, AsyncHTTPC ...

  4. python同步异步_python中Tornado的同步与异步I/O的介绍(附示例)

    本篇文章给大家带来的内容是关于python中Tornado的同步与异步I/O的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 协程是Tornado种推荐的编程方式,使用 ...

  5. Windows线程同步API

    本文主要总结创建.结束线程和WIN32 API提供的一些线程同步方法.同步方法包括用户态同步方式:InterLock.CriticalSection.SRWLock和内核态同步方式:Event.Sem ...

  6. Zookeeper C 同步 API 介绍

    Zookeeper C API 中与访问 Zookeeper 服务相关(比如创建.删除 znode 节点,获取子节点,设置 znode 数据等)的同步 API 如下: ZOOAPI int zoo_a ...

  7. RPC-非阻塞通信下的同步API实现原理,以Dubbo为例

    Netty在Java NIO领域基本算是独占鳌头,涉及到高性能网络通信,基本都会以Netty为底层通信框架,Dubbo 也不例外.以下将以Dubbo实现为例介绍其是如何在NIO非阻塞通信基础上实现同步 ...

  8. 关于通讯录同步API报错60020,如何配置IP白名单?

    起因 最近甲方老是说系统出故障了,企业微信不能在OA上创建新用户了,于是服务器一看日志一直报60020这个错误码,通关官方的查询全局错误码提示如下: 官方文档解释 首先关于微信官方给出的开发文档给出提 ...

  9. elasticsearch 6.x (五) 单一文档 API 介绍和使用 update和delete API

    大家好,我是烤鸭: 今天分享的是官网6.x    单一文档(Single document APIs)APIs. 本文这是部分翻译,如果想看全部的,还是建议阅读官方api.链接: https://ww ...

最新文章

  1. 函数的重载与 泛型(generic)有什么不同?
  2. python 命令行参数-python获取命令行参数的方法(汇总)
  3. WebSocket负载均衡
  4. The method setOnClickListener(View.OnClickListener) in the type View is not applicable
  5. 关于hive数仓这个概念的一些理解+查看hive底层引擎是否是tez
  6. mysql访问类型最好的_【干货满满】最全的MySQL性能指南(一):选择最佳的数据类型...
  7. Ubuntu 16.04退出anaconda环境
  8. 经典论坛程序 Discuz! 回归
  9. 未来科技计算机作文600字,未来科技发展_600字
  10. VM虚拟机Linux克隆后网卡的相关操作
  11. SQL 2008下载安装及问题解决
  12. PHP输出100以内的质数(包括普通写法和数组形式输出)
  13. 解决IDEA中leetcode插件出现中文乱码问题
  14. 计算机如何隐藏任务栏的程序,电脑系统教程_电脑如何隐藏任务栏图标
  15. 淘宝以图搜图接口,图片搜索商品接入指南
  16. AD19导出bom表的方法(按照元件不同数值分类,重点信息突出)
  17. 为什么微博超话显示服务器有点累,微博超话帖子被吞是什么原因?使用时,注意这些事项...
  18. 服务器虚拟化的工作原理,虚拟化技术及其原理
  19. 面纱星云的西面纱中的女巫帚星云
  20. 解决数据库日期返回格式不是yyyy-MM-dd HH:mm:ss 的问题

热门文章

  1. iOS - 打电话, 发短信
  2. -webkit-gradient webkit内核浏览器的Linear Gradients (线性渐变) -Css3演示
  3. sdut 2152:Balloons(第一届山东省省赛原题,DFS搜索)
  4. volatile 和 sig_atomic_t
  5. 转 .NET 2.0 SqlDependency快速上手指南
  6. WEB前端 前端开发者 如何突破技术瓶颈
  7. Vue 响应式原理(双向数据绑定) 怎样实现 响应式原理?
  8. nginx php mysql 部署_Linux+Nginx+Mysql+Php运维部署
  9. python中str函数_一文让你彻底搞懂Python中__str__和__repr__?
  10. react招聘项目——使用cookie实现项目自动登录功能