请求头content-type的不同格式后端应该如何接收

这篇具有很好参考价值的文章主要介绍了请求头content-type的不同格式后端应该如何接收。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

博客原文地址

"Content-Type" 是HTTP请求头中的一个标头,用于指示请求或响应中包含的实体的媒体类型。它告诉客户端如何处理响应中的数据,并通知服务器客户端正在发送的数据类型。它可以出现在请求或响应标头中。

常见的Content-Type类别

Content-Type的值通常由一个媒体类型和一个可选的字符集组成,例如 “Content-Type: text/html; charset=UTF-8”

常见的 Content-Type 类型:

  • text/plain:纯文本
  • text/html:HTML格式
  • application/json:JSON数据格式
  • application/xml:XML数据格式
  • application/x-www-form-urlencoded:普通表单格式(键值对)
  • multipart/form-data:多部分表单格式(用于文件上传)
  • image/jpeg:JPEG图片格式
  • image/png:PNG图片格式
  • audio/mpeg:MPEG音频格式
  • video/mp4:MP4视频格式
  • application/octet-stream:二进制流数据格式

HTTP规范还支持其他多种媒体类型,具体取决于实际需要。当客户端发送请求时,它必须设置Content-Type头以告知服务器发送的数据类型。而服务器返回的响应也必须设置Content-Type头以告知客户端响应数据的类型。

后端如何接收参数

SpringBoot后端接收参数的方式有以下几种:

  • @PathVariable:用于接收Get请求通过拼接url传递的参数,例如localhost:7001/param/123
  • @RequestParam:用于接收Get请求通过查询字符串传递的参数,例如localhost:7001/param?id=123
  • @RequestBody:用于接收Post请求通过请求体传递的参数,可以是JSON或表单格式
  • @RequestHeader:用于接收请求头部传递的参数

1.@RequestBody

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),对于get方法来说是没有请求体的,所以一般都是使用post请求方式时使用这种方式传参。
如果参数时放在请求体中,并且Content-Type为application/json,那么后台要用@RequestBody才能接收到;
如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或则形参前 什么也不写也能接收。

@PostMapping("/example")
public String handleFormSubmit(@RequestBody User user) {
    // 处理表单提交数据
}

@RequestBody会自动将请求体中的json数据封装进User实体类中。json的key和实体类的属性名一一对应。

2.@RequestParam

@RequestParam注解通常用于接收前端传递的URL参数或表单参数。这些参数可以通过HTTP GET请求的URL参数或HTTP POST请求的表单参数进行传递。

1.Query参数:即URL中的查询参数,例如

http://example.com/path?param1=value1&param2=value2

在这种情况下,@RequestParam注解会将查询参数的值与方法参数进行绑定。例如:

@GetMapping("/example")
public String example(@RequestParam("param1") String param1, @RequestParam("param2") String param2) {
    // method body
}

2.Form表单参数:即表单提交时的参数,例如通过application/x-www-form-urlencoded格式以Post方式的提交的表单。在这种情况下,@RequestParam注解会将表单参数的值与方法参数进行绑定。例如:

@PostMapping("/example")
public String example(@RequestParam("param1") String param1, @RequestParam("param2") String param2) {
    // method body
}

另外,如果通过application/x-www-form-urlencoded格式提交的表单,也可以将其直接封装成Java类,此时参数前不需要加任何注解即可。

@PostMapping("/example")
public String example(Param param) {
    // method body
}

注:如果是通过json传递的表单数据,则必须加@RequestBody才能将其转成Java类

需要注意的是,使用@RequestParam注解时需要指定参数的名称,这个名称要和前端传递参数时的名称一致。如果前端传递参数时使用了不同的名称,可以通过@RequestParam注解的value属性或name属性来指定正确的参数名称。

post和get提交表单的区别

  1. 对于HTTP GET请求提交的表单,表单参数通常会被编码到URL中,形成类似于以下的URL
http://example.com/api/example?id=123&name=John

这种直接使用@RequestParam接收参数,但是如果参数较多,可以使用Java类接收

//使用@RequestParam接收单个参数
@PostMapping("/example")
public String example(@RequestParam("param1") String param1, @RequestParam("param2") String param2) {
    // method body
}
//使用Java类接收参
@PostMapping("/example")
public String example(User user) {
    // method body
}


public  class User{
    String id;
    String name;
}
  1. 对于post提交的表单,格式可以有多种,这里主要说一下application/x-www-form-urlencodedapplication/json两种格式

(1)"application/x-www-form-urlencoded"格式
这是一种常用的表单格式,也是浏览器默认使用的表单格式。在这种格式下,表单数据会被放置在HTTP请求的正文中,也就是请求体中。正文内容由键值对组成,每个键值对之间用&符号连接例如:

POST /example HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded

id=123&name=John&age=20

接收这种格式的参数,可以使用@RequestParam接收,也可以使用Java类接收,因为是application/x-www-form-urlencoded格式,使用Java类不需要加@RequestBody,和上面接收get表单方法一致。
(2)"application/json"格式
这是一种常用的数据交换格式,它使用JSON格式来描述数据。在这种格式下,表单数据会被序列化为JSON字符串,并放置在HTTP请求的正文中。例如:

{
  "id": 123,
  "name": "John",
  "age": 20
}

可以使用@RequestBody注解来接收这种格式的表单数据,并将其反序列化为Java对象。此时Java对象前必须加@RequestBody注解才行。文章来源地址https://www.toymoban.com/news/detail-680100.html

到了这里,关于请求头content-type的不同格式后端应该如何接收的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTTP请求头响应头的Content-type和Response Type是什么?

    写代码写着写着发现这些HTTP的概念还不清楚,缕一缕。 根据MDN的解释 Content-Type 实体头部用于指示资源的 MIME 类型 MIME 类型,即媒体类型,是一种标准,用来表示文档、文件或字节流的性质和格式。 根据MDN的解释: response.type的值可以是: basic 标准值,同源响应 cors 接收到一

    2024年02月15日
    浏览(51)
  • axios请求头设置常见Content-Type和对应参数的处理

    首先要明确的一点是,我们在项目中调用接口,通常是以对象的数据格式传给自己封装的http请求函数的。 现在的前后端分离项目基本上都是使用的这个进行数据传递。 axios默认Content-type是采用application/json;charset=UTF-8,无需设置直接把对象传进去即可 当然, 也可以在请求拦截

    2023年04月09日
    浏览(42)
  • 在网页下载文件时,设置各种文件格式的response头中的content-type

    Ext MIME Type .doc application/msword .dot application/msword .docx application/vnd.openxmlformats-officedocument.wordprocessingml.document .dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template .docm application/vnd.ms-word.document.macroEnabled.12 .dotm application/vnd.ms-word.template.macroEnabled.12 .xls application/vnd.ms-excel .x

    2024年02月05日
    浏览(55)
  • Postman Post请求四种参数传递方式与Content-Type对应关系

    Postman post 请求四种数据传递类型代表的Content-Type类型: 1、form-data : 对应的Content-Type:multipart/form-data;boundary= 表示文件上传; 2、x-www-form-urlencoded:对应的Content-Type:application/x-www-form-urlencoded 表示表单提交; 3、raw:对应的Content-Type分为五类: 4、binary:对应的Content-Type:ap

    2024年02月05日
    浏览(53)
  • http请求头Content-Type的值为text/plain报错415解决方案

    问题描述:http请求报错415,经过了解主要是请求头Content-Type的值为text/plain,为了方便演示,创建一个测试类 测试类 如果请求的请求头是text/plain,则会报错,错误码415 具体报错 解决方案很简单,直接用字符串接收参数就行,示例代码

    2024年02月15日
    浏览(57)
  • PHP用CURL发送Content-type为application/json的POST请求方法

    HELLO 各位伙伴,最近一直在做项目,没有及时更新。望请见谅。 今天,给大家讲一下php请求第三方接口的时候遇到的问题,大家都知道,在请求第三方接口的时候,会要求我们用post还是get来传参 一般我们传参的时候基本上都是form-data。有一些第三方为了安全或者是编码格式

    2024年02月10日
    浏览(53)
  • Http请求中Content-Type和Accept讲解以及在Spring MVC中的应用

    在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在spring MVC中如何使用它们来映射请求信息。 1.  Content-Type MediaType是Internet Media Type,互联网媒体类型;也叫做

    2023年04月21日
    浏览(42)
  • 前端篇-Content-Type 详解

    Content-Type(MediaType),即是Internet Media Type,互联网媒体类型,也叫做MIME类型。在互联网中有成百上千中不同的数据类型,HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签,用于区分数据类型。最初MIME是用于电子邮件系统的,后来HTTP也采用了这一方案。 在HTTP协议

    2024年04月27日
    浏览(47)
  • Content-Type 值有哪些?

    1、application/x-www-form-urlencoded 最常见 POST 提交数据的方式。 浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。 Cntent-Type 被指定为 application/x-www-form-urlencoded。 其次,提交的数据按照【name=小草莓other=hahah】的方式进行编

    2024年02月06日
    浏览(53)
  • http中的Content-Type类型

    最近在做web端下载的时候需要给前端返回一个二进制的流,需要在请求头中设置一个 那么http中的Content-Type有具体有哪些呢?他们具体的使用场景又是怎样的呢? MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包