- HTTP url
- 最好通过URLEncode将参数部分编码,避免空格、中文和特殊字符
- HTTP请求头中的origin, referer和host三个字段的区别
- host
- 描述请求将被发送的目的地,包括,且仅仅包括域名和端口号
- 在任何类型请求中,request都会包含此header信息。
- origin(可能没有)
- 用来说明请求从哪里发起的,包括,且仅仅包括协议和域名。
- 这个参数一般只存在于CORS跨域请求中,可以看到response有对应的header:Access-Control-Allow-Origin。
- referer
- 告知服务器请求的原始资源的URI,其用于所有类型的请求,并且包括:协议+域名+查询参数(注意,不包含锚点信息)。
- 因为原始的URI中的查询参数可能包含ID或密码等敏感信息,如果写入referer,则可能导致信息泄露
- host
- HTTP Method
- Get
- Head
- Post
- 非等幂
- Create或Update一个资源(整体更新),要提供所有字段信息
- Put
- 等幂
- Create或Update一个资源(整体更新),要提供所有字段信息
- 请求数据类型(Content Type)一般是application/json
- 响应数据类型(Content Type)可能是application/hal+json或application/vnd.error+json,而不是简单的application/json
- Patch
- 非等幂
- Patch一个资源(局部更新),一般只要提供必要信息(如id)即要修改的字段信息
- 请求数据类型(Content Type)可能是application/merge-patch+json,而不是简单的application/json
- 响应数据类型(Content Type)可能是application/hal+json或application/vnd.error+json,而不是简单的application/json
- 对比
- Post和Put都可以用于创建和更新资源,区别仅在于幂等性,只不过一般Post用于创建,Put用于全量更新,是否幂等更重要!
- Get取得的数据一般和Post的数据差不多,可能就Post时少传一个id,因为是创建还没有id呢。Put和Post的参数结构就不一定了,不一定和Get对应,够用就行。