前端日常发送HTTP请求最长用到GET, POST两种方法,如果是在一个符合RESTful设计规范的应用中,
常用到5个方法:GET、POST、PUT、PATCH、DELETE。
PS:

RESTful设计规范是前后端分离接口设计的一种规范,在遵从了这一规范,可以大大节约沟通的成本,RESTful中借用HTTP各种方法的语义,约定了各接口的作用。

客户端向服务端发送请求的信号称为请求报文,HTTP 请求报文由四部分组成,分别是请求行、请求头、空行和请求体,本文介绍的请求方法被包含在请求行中

RESTful设计规范中的五个方法

一、GET方法

最常用的方法,它是发送一个请求来获取服务器上的资源,资源通过HTTP响应头和数据(如html文档,图片,样式,视频等)返回给客户端(如浏览器)。
GET 请求可以在 URL 中附带查询参数,如test.php?id=1.

  • GET 请求可被缓存
  • GET 请求保留在浏览器历史记录中
  • GET 请求可被收藏为书签
  • GET 请求不应在处理敏感数据时使用
  • GET 请求有长度限制,不同浏览器的长度限制不同
  • GET 请求只应当用于取回数据
    如何发出一个get请求
  • 浏览器地址栏中输入网址访问资源都是通过GET方式发送HTTP请求
  • 表单的methods属性为get
<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);
}

二、POST方法

常用方法,用于向服务器提交数据,请求的参数要在请求体(body)中发送,可用于表单的提交和异步提交(如ajax),理论上,POST传递的数据量没有限制。

  • POST 请求不会被缓存
  • POST 请求不会保留在浏览器历史记录中
  • POST 不能被收藏为书签
  • 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提交数据编码格式

三、PUT方法

与POST方法类似,在RESTful设计规范中,一般POST方法代表新增,PUT方法代表整体更新,选择什么方法主要看接口的要求,PUT请求的参数一样要在HTTP请求的消息主体中发送,默认情况下put请求是无法提交表单数据的。

四、PATCH方法

与PUT方法类似,但PATCH方法通常应用于局部更新。

五、DELETE方法

删除某一个资源,默认情况下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请求头与响应头详解

常用的HTTP请求方法相关推荐

  1. RESTful API常用的HTTP请求方法

    GET:获取资源 例如图片.css文件.js文件等,在RESTful API中,一般用来获取数据,例如列表,详情等.对应CRUD中的R,即查找操作. POST:传输实体主体 例如提交表单信息,在RES ...

  2. 常用 Http 的请求方法

    第一次用markdown写博客,体验下 因为常用Http的几种请求方式,总结一下. 1.封装两个Http的最常用方法,叫做HttpHelper类. HttpPost: public static st ...

  3. HTTP请求格式、状态码及常用请求方法

    常用的HTTP请求方法,按照RFC2616标准(HTTP1.1)来看,通常有以下8种方法:get.post.put.delete.head.trace.connect.options. HTTP请求格 ...

  4. jQuery 发起 Ajax 请求最常用的三个方法

    浏览器中提供的 XMLHttpRequest 用法比较复杂,所以 jQuery 对 XMLHttpRequest 进行了封装,提供了一系列 Ajax 相关的函数,极大地降低了 Ajax 的使用难度. ...

  5. http常用请求方式及发起请求方法总结

    目录 请求方式 get post delete put head 发起请求 方法 例子 请求方式 前五种请求方式比较常用,下面来做一些补充: get 请求指定页面的信息,并返回实体主体. (1)get ...

  6. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  7. HTTP简介、请求方法与响应状态码

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! Https相关的文章,请看这一篇:TCP.IP协议族之数字签名与HTTPS详解 接下来想系统的回顾 ...

  8. PHP教程:WebService最常用的两种方法

    国内用PHP写WebService的真的很少,网上资料也没多少,公司的项目开发过程中,经历了不少这方面的东西,写出来以供大家参考(谢谢老农提供的WSDL和程序文件) 客户端 代码: 01.   02. ...

  9. TCP/IP协议族(一) HTTP简介、请求方法与响应状态码

    接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的.接下来的几篇博客都是关于TCP/IP协议族的,本篇博客就先简单 ...

最新文章

  1. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍
  2. hdu1358 最小循环节,最大循环次数 KMP
  3. 学习Kotlin(四)对象与泛型
  4. 2020-12-19通信电子线路第一章
  5. (C++)浅谈using namespace std
  6. 高薪、稀缺人才必备哪些技能?BDTC大会告诉你,附最新议程!
  7. java字符串转字符串数组_Java字符串数组
  8. 拓端tecdat|R语言广义线性模型(GLMs)算法和零膨胀模型分析
  9. oneproxy出现2103错误代码解决方案
  10. 常见关系型数据库(sql server/oracle)查询语句面试题
  11. Scratch3.0创意编程(基础篇):第10课 接苹果
  12. 科学院计算机研究所谢教授,谢维波
  13. linux 拒绝访问文件夹,文件夹拒绝访问的原因与解决办法
  14. 全网最透彻的Hash分析
  15. 关于计算机知识脑筋急转弯,脑筋急转弯及知识竞答
  16. 不同等级的UI设计师工作内容有什么区别?
  17. 计算机域名怎么查看?如何查看电脑域名?
  18. Python Eric7+PyQt6环境配置,GUI程序开发
  19. 绘制多边形--scratch编程二级
  20. 蝉知 7.7 正式发布,移动端全面改版!

热门文章

  1. linux 下的 wchar_t
  2. java-通知-阿里云短信服务
  3. notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别?
  4. 安装golang出现 Hey! The program ‘go‘ is currently not installed. You can install it by typing...
  5. 红米Note通过卡刷获取root权限教程,附各版本root包
  6. 写给成为高手之路上的朋友们
  7. vim 删除行首和行尾空格
  8. i春秋CTF训练 Web 破译
  9. 侯捷C++系统工程师
  10. Redis中AKF原则的应用