一、HTTP的请求方式
HTTP(Hypertext Transfer Protocol)中常见的请求方式有 GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT。这些请求方式之间的主要区别如下:
1. GET:用于请求指定资源,一般用于获取数据。GET 请求使用 URL 来传递参数,其特点是请求幂等,即多次执行同一个 GET 请求应该返回相同的结果。
2. POST:用于提交数据,一般用于创建新资源或执行某些操作。POST 请求使用消息体来传递参数,其特点是请求不幂等,即多次执行同一个 POST 请求可能会创建多个资源,导致副作用。
3. PUT:用于更新指定资源,一般用于修改数据。PUT 请求使用消息体来传递参数,其特点是请求幂等,即多次执行同一个 PUT 请求应该产生相同的结果。
4. DELETE:用于删除指定资源,一般用于删除数据。DELETE 请求使用 URL 来传递参数,其特点是请求幂等,即多次执行同一个 DELETE 请求应该产生相同的结果。
5. HEAD:用于获取指定资源的信息,但不返回实体消息体。HEAD 请求与 GET 请求类似,只是不返回实体消息体,通常用于获取资源的元数据。
6. OPTIONS:用于获取有关请求资源的通信选项的信息。OPTIONS 请求通常用于检查服务器支持哪些请求方式和通信选项。
7. TRACE:用于将请求回显回客户端,以便客户端可以查看请求在服务器端如何处理。TRACE 请求通常用于调试和测试。
8. CONNECT:用于通过代理与资源建立隧道。CONNECT 请求通常用于建立安全的 SSL/TLS 连接。
总的来说,GET 和 POST 是最常用的请求方式,GET 用于获取数据,POST 用于提交数据。PUT 和 DELETE 用于更新和删除数据。HEAD、OPTIONS、TRACE、CONNECT 等请求方式相对较少使用,主要用于特定的场景。
注意:
get 和 post区别:
1. get请求无消息体,只能携带少量数据
2. post请求有消息体,可以携带大量数据
携带数据的方式:
get请求将数据放在url地址中
post请求将数据放在消息体中
GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
二、前后端数据传输常用的方式有以下5种:
- url param
- query
- form-urlencoded
- form-data
- json
1. url param
url param 的数据传输方式是把数据直接放在 url 上,如下面的数据123:
https://baidu.com/test/123
2. query
在url上通过?连接数据,当有多个数据需要传输时,使用&,如下:
https://baidu.com/test?search=abc&id=123
若需要传输非英文数字的特殊字符,比如传输中文时,需要使用encodeURIComponent来进行编码:
encodeURIComponent('名字')
3. form-urlencoded
数据放到body中进行传输,form表单传输数据使用的是这种方式。
其中要传输的数据格式是和query一样的,都是使用&把多个数据连接起来,对于需要传输非英文数字的特殊字符,比如传输中文时,需要使用encodeURIComponent来进行编码。如:
search=abc&id=123
注意:该格式不适合大数据传输,比如文件传输,若是文件传输,请使用form-data
4. form-data
该格式的传输数据放到body中进行传输。
form data的传输数据格式不是通过 & 分隔数据,而是用 --------- + 一串数字做为 boundary 分隔符。因为不是 url 的方式了,所以也不用做 url encode。
form-data 需要指定 content type: multipart/form-data,然后指定 boundary 也就是分割线。
body 里面就是用 boundary 分隔符分割的内容。
很明显,这种方式适合传输文件,而且可以传输多个文件。
但是毕竟多了一些只是用来分隔的 boundary,所以请求体会增大。
5. json
该格式的传输数据放到body中进行传输。
form-urlencoded 需要对内容做 url encode,而 form data 则需要加很长的 boundary,两种方式都有一些缺点。如果只是传输 json 数据的话,不需要用这两种。
可以直接指定content type: application/json。