目录
概念
该取样器允许你给服务器发送http/https请求。如果想熟练掌握HTTP Request,需要对http协议有所理解。
Http协议
互联网的本质就是一系列的网络协议,基于OSI模型,大致分为7层。Http协议属于应用层,是基于TCP/IP协议进行通信的。
目前主流的还是Http1.1(https://www.ietf.org/rfc/rfc2616.txt) 。
Http协议是用于客户端和服务器之间的通信,那么必定一端担任客户端角色,一端担任服务器端角色。(相对的,角色是可以互换的)。Http协议规定,请求从客户端发送,最后服务器端响应请求并返回。一般需要简单了解下Http请求报文和响应报文,对于写好一个HTTP Request很有帮助。
一般Http报文分为:请求报文和响应报文
> GET / HTTP/1.1 ## 请求行: Method URI Protocol
> Host: www.baid.com
> User-Agent: curl/7.54.0 ## 请求头:Key: Value格式
> ## 请求体
< HTTP/1.1 200 OK ## 响应行: Protocol StatusCode Msg
< Content-Type: text/html
< Content-Length: 2443
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
< Connection: keep-alive
...
## 响应头:Key: Value格式
<
<!DOCTYPE html>
....
....
....
</html> ## 响应体
常见Http请求方法
对于Http请求方法,大部分还是Get/Post,其他还有Options/Header/Put/Delete/Trace...
GET是最常用的方法,通常用于请求服务器发送某个资源。
POST方法起初是用来向服务器输入数据的,通常用于支持表单提交。
常见Http请求头
Content-Type 内容首部,告知服务器请求数据体的格式类型
- application/x-www-form-urlencoded
- application/json
- multipart/form-data
Authorization 包含客户端提供给服务器的认证信息
Cookie 包含cookie信息,一般用于认证相关
试试吧
在编写HTTP Request之前,需要了解即将发生的Http请求,
如 method: GET/POST/..、protocol: http/https 、serverName、port、URI:请求资源(path)、请求参数以及类型
### 模拟一些API,
## case 1: GET请求,Restful风格API
$ curl -XGET http://api.demo.com:8888/product/detail/108
{"name":"iphone6","price":5000.5,"quantities":1000,"brand":"iphone"}
## case 2: GET请求,请求参数形式
$ curl -XGET http://api.demo.com:8888/product/detail?id=265
{"name":"Huawei Meta20","price":4700.5,"quantities":200,"brand":"huawei"}
## case 3: POST请求,参数以application/json形式提交数据
$ curl -XPOST 'http://api.demo.com:8888/product/create/v1' -H 'Content-Type: application/json' --data-raw '{"name":"iphone10","price":6700.5,"quantities":200,"brand":"iphone"}'
{"msg":"ok","code":200,"productId":353}
## case 4: POST请求,参数以application/x-www-form-urlencoded形式提交数据
$ curl -XPOST 'http://api.demo.com:8888/product/create/v2' -H 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'name=Xiaomi10s' --data-urlencode 'price=2601.5' --data-urlencode 'quantities=150' --data-urlencode 'brand=xiaomi'
{"msg":"ok","code":200,"productId":656}
## case 5: POST请求,参数以multipart/form-data; boundary= 形式提交数据,请求参数以boundary形式分隔提交,也一般用于上传文件
$ curl -XPOST 'http://api.demo.com:8888/product/create/v3' --form 'name="Oppo Reno 6"' --form 'price=2700.5' --form 'quantities=130' --form 'brand="oppo"'
{"msg":"ok","code":200,"productId":465}