前端日常发送HTTP请求最长用到GET, POST两种方法,如果是在一个符合RESTful
设计规范的应用中,
常用到5个方法:GET、POST、PUT、PATCH、DELETE。
PS:
RESTful设计规范是
前后端分离
接口设计的一种规范,在遵从了这一规范,可以大大节约沟通的成本,RESTful中借用HTTP各种方法的语义,约定了各接口的作用。客户端向服务端发送请求的信号称为请求报文,HTTP 请求报文由四部分组成,分别是请求行、请求头、空行和请求体,本文介绍的请求方法被包含在请求行中
最常用的方法,它是发送一个请求来获取服务器上的资源,资源通过HTTP响应头和数据(如html文档,图片,样式,视频等)返回给客户端(如浏览器)。
GET 请求可以在 URL 中附带查询参数,如test.php?id=1.
浏览器地址栏
中输入网址访问资源都是通过GET方式发送HTTP请求<form method="get" action="http://localhost:5000/api/login" >
<input type="text" name="login_name" value="admin">
<input type="text" name="login_password" value="123456">
<input type="submit" value="提交"/>
form>
3、ajax发送一个get请求
var xhr=new XMLHttpRequest();
xhr.open("GET","https://www.fastmock.site/mock/d6b39fde63cbe98a4f2fb92ff5b25a6d/api/getOne?id=1",true);
xhr.send();
xhr.onload =function(){
console.log(xhr);
}
常用方法,用于向服务器提交数据,请求的参数要在请求体(body)中发送,可用于表单的提交和异步提交(如ajax),理论上,POST传递的数据量没有限制。
由于HTTP协议只规定 POST 提交的数据必须放在消息主体(body)中,并没有规定数据必须使用什么编码方式。前后端交互时编码和解码就变的棘手,服务端通常是根据请求头中的Content-Type
字段来获知请求中的消息主体是用何种方式编码,再对body进行解析。
常用的编码方式:
application/x-www-form-urlencoded
数据在发送到服务器之前,会将表单内的数据转换为键值对,比如,username=admin&password=123456,并将所有字符都会进行URL 转码。multipart/form-data
数据将被编码为一条消息,以标签为单元,用分隔符分开,既可以上传键值对,也可以上传文件,通常用于上传二进制的文件application/json
用来告诉服务端消息主体是序列化后的 JSON 字符串,前端无法将表单的enctype属性指定为application/json,通常使用ajax的方式发送这种编码形式的请求具体使用何种编码方式,需要前后端进行约定,目前比较常见的是文件上传时使用multipart/form-data,其他默认使用application/json编码方式。
post方法提交数据,必须指定Content-Type头,如果不指定,浏览器会添加默认的Content-Type头。
<form method="post" action="http://localhost:5000/api/login" enctype="application/x-www-form-urlencoded">
<input type="text" name="login_name" value="test">
<input type="text" name="login_password" value="123456">
<input type="submit" value="提交"/>
form>
也可以在js中创建一个FormData对象,提交表单,使用 FormData对象,浏览器会自动识别并添加请求头 “Content-Type: multipart/form-data”
var formData = new FormData();
formData.append("login_name", "test");
formData.append("login_password", "123456");
var xml= new XMLHttpRequest();
xml.open("POST", "http://localhost:5000/api/users/login");
xml.send(formData);
常见的四种post提交数据编码格式
与POST方法类似,在RESTful设计规范中,一般POST方法代表新增,PUT方法代表整体更新,选择什么方法主要看接口的要求,PUT请求的参数一样要在HTTP请求的消息主体中发送,默认情况下put请求是无法提交表单数据的。
与PUT方法类似,但PATCH方法通常应用于局部更新。
删除某一个资源,默认情况下DELETE方法在 URL 中附带查询参数,也无法提交表单数据的。
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体。 |
2 | HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
4 | PUT | HTTP1.1 从客户端向服务器传送的数据取代指定的文档的内容。 |
5 | DELETE | HTTP1.1 请求服务器删除指定的页面。 |
6 | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | OPTIONS | HTTP1.1 允许客户端查看服务器的性能。 |
8 | TRACE | HTTP1.1 回显服务器收到的请求,主要用于测试或诊断。 |
9 | PATCH | HTTP1.1 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
前端要了解的HTTP知识
HTTP请求头与响应头详解