Postman中POST方式使用form-data和raw作为body发起请求理解(Python tornado服务器)

前言

今天使用Python的tornado作为Web服务来测试自己写的服务接口,前几天用postman测试都好好的,直接Qt写程序请求就嗝屁了,解析不到参数,各种百度无解,终于看到一篇文章有写,于是记录一下:(其实是copy,????)

至于客户端如何form格式和Row(json)格式请求可以查看我之前很早的一片博客:(人老了,记忆力就差了,明明之前就搞透彻过这个问题,现在回过头来搞服务器就掉坑了!!!)

Qt HTTP POST请求 (Json格式和Form格式) 访问服务器

后面我使用postman的raw请求也是嗝屁,之前默认用的是form-data方式请求的。
下面请看分析:

服务器环境:测试服务器选择的是Python的tornado作为Web服务器

首先是raw方式提交的POST请求:

Postman中POST方式使用form-data和raw作为body发起请求理解(Python tornado服务器)
在这里请求提交以后, 可以从服务器端进行一个调试
Postman中POST方式使用form-data和raw作为body发起请求理解(Python tornado服务器)
在这里可以看见, 利用raw作为body进行POST请求的时候, 请求的参数只能通过self.request.body获取到的.
通过这个参数获取到的是一个字符串, 通过json.loads(self.request.body)即可获取到传递值的一个dict, 从而进行下一步的逻辑操作.

接下来是form-data方式提交的POST请求:

Postman中POST方式使用form-data和raw作为body发起请求理解(Python tornado服务器)
同样的, 我们在这个地方做一个调试
Postman中POST方式使用form-data和raw作为body发起请求理解(Python tornado服务器)
利用form-data方式进行POST请求的时候, 请求的参数可以通过self.request.argument以及self.request.body_arguments得到, 而且可以不用经过处理就是一个可以使用的dict对象

而通过self.requst.body得到的是请求主体, 可以看到的是
Postman中POST方式使用form-data和raw作为body发起请求理解(Python tornado服务器)
我们所有的请求参数被分割开来了, 这种请求方式可以一次性请求很多参数, 同时也可以POST请求上传文件!

参考:https://blog.csdn.net/qq_41637554/article/details/82218743