HTTP

1. HTTP请求组成

  1. 请求行(Request Line):

    • 请求方法:例如 GETPOSTPUTDELETE 等。
    • 请求的 URI(Uniform Resource Identifier):请求的资源路径。
    • HTTP 版本:例如 HTTP/1.1
  2. 请求头(Request Headers):

    • 用于传递额外的请求信息和客户端自身描述,例如 User-AgentHostAcceptContent-Type 等。
  3. 空行:

    • 请求头与请求体之间的分隔符。
  4. 请求体(Request Body):

    • 可选,用于在 POST 或 PUT 请求中传递数据,如表单数据或 JSON。
GET /example HTTP/1.1
Host: www.example.com
User-Agent: curl/7.64.1
Accept: */*

<空行>

1.2 常用请求方法

  • GET:请求服务器提供指定的资源。只查询/获取数据,不会影响服务器数据。(数据附在URL之后)
  • POST:向服务器提交数据(例如表单),通常用于创建资源或进行数据提交。(数据在body中传递)
  • PUT:上传指定资源的全部内容,通常用于更新资源。(数据在body中传递;幂等)
  • DELETE:请求删除指定资源。(数据在body中传递)

1.3 PUT和POST区别

  • POST:更新资源,非幂等的。多次调用会产生不同的结果,比如:创建一个用户,由于网络原因或是其他原因多创建了几次,那么将会有多个用户被创建。
  • PUT:更新资源,幂等的。PUT id/456则会创建一个id为456的用户,多次调用还是会创建的结果是一样的。
    • 要求前端提供完整的资源对象。理论上说,如果你用了PUT,但却没有提供完整的UserInfo,那么缺了的那些字段应该被清空。
  • PATCH:局部更新资源。假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段。可是某个页面里只想修改userName,这时只传一个userName到指定资源去,表示该请求是一个局部更新,后端仅更新接收到的字段。

1.4 Content-Type

Content-Type字段表示消息主体的编码方式

  • application/x-www-form-urlencoded【原生Form表单】

    • 最常见的 POST 提交数据的方式了。浏览器的原生表单上传,将表单内的数据转换为Key-Value, 而且键值对都是通过&间隔分开的。

    • 只能上传键值对

    • 如果不设置 enctype 属性,默认为application/x-www-form-urlencoded 方式提交数据。

  • multipart/form-data【支持文件上传的Form表单】

    • 这也是常见的post请求方式,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。

    • 既可以上传键值对,也可以上传文件,甚至多个文件。

  • application/json【json字符串】

    • 常见的post提交数据方式,上传的是json字符串,后端使用@RequstBody接收

  • application/octet-stream【二进制文件】

    • 如application/pdf,指定了特定二进制文件的MIME类型。就像对于text文件类型若没有特定的子类型(subtype),就使用 text/plain。类似的,二进制文件没有特定或已知的 subtype,就使用 application/octet-stream,这是应用程序文件的默认值,一般很少直接使用 。

    • 对于application/octet-stream,只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)。

1.5 Http Header最大长度

默认情况下,tomcat(8.0版本)允许的http请求header的最大值是8024个字节(8KB)。https://cloud.tencent.com/developer/news/240970

posted @   zhegeMaw  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示