当前端通过通过Get或Post进行HTTP请求时,有两种方式传递参数:通过请求体(body)和通过查询字符串(query)。
GET:
- GET方法用于从服务器获取资源,它只能通过查询字符串(query)传递参数,放在URL中的末尾。
- query的格式是在URL后面加一个问号(?),再添加键值对(参数名=参数值),如:
https://mp.csdn.net/mp_blog/creation/editor?spm=1000
- 假如有多个参数,参数与参数之间就用连接符(&)分隔,如:
https://mp.csdn.net/mp_blog/creation/editor?spm1=1000&spm2=1001
- GET请求的参数长度是有限制的,一般是几千字符左右,不适合传递大量的数据。
- GET 请求的参数可能被缓存,可能会北浏览器记录在历史记录中。
POST:
- POST方法用于向服务器提交数据,它既可以通过查询字符串(query),也可以通过请求体(body)传递参数。
- body可以是Json对象、表单数据等。在进行POST请求的时候,可以使用不同的Content-Type 头部来指定参数的格式,如 application/json、application/x-www-form-urlencoded 等。
- 传递body参数不会像query那样直接附加到URL中,而是在POST代码块里面进行传递。
- POST 请求的参数长度没有限制,可以传递大量的数据。
- POST 请求的参数不会被缓存,不会被浏览器记录在历史记录中。
通过对比,我们会发现,?query更适用于传递简单且参数比较少的情况,假如需要传递复杂的数据结构或者大量的数据,那么使用body传参更为合适。
作为前端开发,通常接口和传参格式都会由后端接口定义好,此时我们仅需要根据后端所定义的参数方式,进行请求就没什么大问题。