Spring MVC 请求头中 ContentType和DataType区别

news2024/12/17 7:28:53

一、Spring MVC 请求头中ContentType和DataType区别用途

1. dataType【通常在JQuery中使用】

  • 定义dataType 通常用于描述前端希望从服务器接收的数据格式。
  • 常见场景:这是前端参数,通常在 jQuery.ajax 或其他前端框架中使用,告诉客户端如何解析服务器返回的数据。
  • 取值范围
    • json:期望接收到 JSON 格式数据。
    • xml:期望接收到 XML 格式数据。
    • html:期望接收到 HTML 文本。
    • text:期望接收到普通文本。
  • 作用
    • 决定客户端解析响应数据的方式。
    • 不会直接影响服务器的处理方式,而是客户端根据返回数据进行解析时的参考。
$.ajax({
    url: '/api/getData',
    type: 'GET',
    dataType: 'json', // 告诉前端期望接收 JSON 格式
    success: function(data) {
        console.log(data);
    }
});

2. contentType【Http请求和响应的内容类型】

  • 定义contentType 用于描述 HTTP 请求或响应的内容类型(MIME 类型)。
  • 常见场景
    • 在 HTTP 请求中,contentType 表示请求的正文格式。
    • 在 HTTP 响应中,contentType 表示服务器返回数据的格式。
  • 取值范围
    • 常见 MIME 类型:
      • application/json:表示 JSON 格式的数据。
      • application/xml:表示 XML 格式的数据。
      • text/html:表示 HTML 文本。
      • text/plain:表示普通文本。
      • multipart/form-data:表示文件上传表单格式。
  • 作用
    • 告诉服务器或客户端请求或响应的具体数据类型。
    • 决定了请求正文的解析方式(对于服务器来说)或内容展示方式(对于客户端来说)。
  • @PostMapping(value = "/submit", consumes = "application/json")
    public ResponseEntity<String> submit(@RequestBody MyObject obj) {
        // 处理 JSON 格式的请求体
        return ResponseEntity.ok("Success");
    }
    
    @GetMapping(value = "/data", produces = "application/json")
    public MyObject getData() {
        // 返回 JSON 格式的数据
        return new MyObject();
    }
    

    二、SpringMVC @PostMapping@GetMapping 注解中 consumesproduces区别和用途

1. consumes 用途

  • 定义:指定当前方法能够处理的 请求体Content-Type
  • 作用:告诉 Spring MVC,这个方法只处理符合指定 Content-Type 的请求。如果请求的 Content-Type 不匹配,将返回 415 Unsupported Media Type 错误。
  • 常用场景
    • 用于 POST、PUT 或 PATCH 方法,这些方法通常需要处理请求体数据。
  • 取值
    • 通常指定为 MIME 类型,如:
      • application/json
      • application/xml
      • multipart/form-data(文件上传)
@PostMapping(value = "/submit", consumes = "application/json")
public ResponseEntity<String> submit(@RequestBody MyObject obj) {
    // 只能处理 Content-Type 为 application/json 的请求体
    return ResponseEntity.ok("Success");
}

如果请求中不包含 Content-TypeContent-Type 不为 application/json,Spring MVC 会拒绝处理请求。

2. produces 用途

  • 定义:指定当前方法返回的 响应体Content-Type
  • 作用:告诉客户端,响应的媒体类型是什么。如果客户端无法接受该媒体类型(通过请求头中的 Accept 指定),可能会返回 406 Not Acceptable 错误。
  • 常用场景
    • 用于 GET 或其他返回数据的请求方法。
  • 取值
    • 通常指定为 MIME 类型,如:
      • application/json
      • application/xml
      • text/html
@GetMapping(value = "/data", produces = "application/json")
public MyObject getData() {
    // 返回的响应体会被设置为 Content-Type: application/json
    return new MyObject();
}

如果客户端的 Accept 请求头中不包含 application/json,Spring MVC 可能会拒绝处理并返回 406 错误。

核心区别

属性consumesproduces
定义请求的 Content-Type响应的 Content-Type
适用场景限制服务器能够接受的请求内容类型限制服务器能够生成的响应内容类型
取值来源对应请求头中的 Content-Type对应请求头中的 Accept
错误响应如果请求的 Content-Type 不匹配,返回 415 错误如果请求的 Accept 不匹配,返回 406 错误
常用注解@PostMapping@PutMapping@GetMapping@RequestMapping

总结

POST 请求可以使用 @PostMapping 中的 consumes 属性来限制接受的 请求内容类型 (Content-Type),当客户端发送的请求 Content-Type 不符合指定类型时,Spring 会返回 415 Unsupported Media Type 错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2260930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无需公网IP,本地可访问TightVNC 服务端

TightVNC 是一款免费而且开源的远程桌面软件&#xff0c;它允许用户在不同的操作系统之间实现无缝连接&#xff0c;TightVNC支持 Windows、macOS 和 Linux 等多个操作系统&#xff0c;为用户提供高效便捷的远程控制体验。在 Windows 系统电脑端安装使用 TightVNC 服务端和客户端…

【Unity基础】Unity中如何实现图形倒计时

为了在Unity中实现一个图形倒计时&#xff0c;除了代码部分&#xff0c;还需要一些UI元素的创建和设置。本文以环形倒计时为例&#xff0c;以下是完整的步骤&#xff0c;涵盖了如何创建UI元素、设置它们&#xff0c;以及如何编写控制环形倒计时进度的脚本。 1. 创建UI元素 创建…

Excel/VBA 正则表达式归纳汇总

1.with结构。以下语句用来提取A列中的“成品”两个字前面的部分的中文&#xff0c;不含成品两个字&#xff0c;结果存放在第2列。使用了On Error Resume Next&#xff0c;表示错误时继续下一条。 Sub 提取口味() Set regx CreateObject("vbscript.regexp") On Err…

xshell连接虚拟机,更换网络模式:NAT->桥接模式

NAT模式&#xff1a;虚拟机通过宿主机的网络访问外网。优点在于不需要手动配置IP地址和子网掩码&#xff0c;只要宿主机能够访问网络&#xff0c;虚拟机也能够访问。对外部网络而言&#xff0c;它看到的是宿主机的IP地址&#xff0c;而不是虚拟机的IP。但是&#xff0c;宿主机可…

优选算法《双指针》

在学习了C/C的基础知识之后接下来我们就可以来系统的学习相关的算法了&#xff0c;这在之后的笔试、面试或竞赛都是必须要掌握的&#xff1b;在这些算法中我们先来了解的是一些非常经典且较为常用的算法&#xff0c;在此也就是优选出来的算法&#xff0c;接下来在每一篇章中我们…

SQL server学习06-查询数据表中的数据(中)

目录 一&#xff0c;聚合函数 1&#xff0c;常用聚合函数 2&#xff0c;具体使用 二&#xff0c;GROP BY子句分组 1&#xff0c;基础语法 2&#xff0c;具体使用 3&#xff0c;加上HAVING对组进行筛选 4&#xff0c;使WHERE记录查询条件 汇总查询&#xff1a;在对数…

上传文件时获取音视频文件时长和文本文件字数

获取音视频文件时长和文本文件字数 一、获取音视频文件时长二、计算文本文件字数 最近有个需求&#xff0c;要求上传文件时获取音视频文件时长和文本文件字数&#x1f436;。 发现这样的冷门资料不多&#xff0c;特做个记录。本文忽略文件上传功能&#xff0c;只封装核心的工具…

C语言学习day22:进程ID获取工具/GetWindowThreadProcessId函数

简言&#xff1a; 每个人都有身份证号&#xff0c;这个身份证号就是个人的唯一标识符 进程也是如此&#xff0c;每个进程也有唯一的标识符&#xff0c;来标记自身是独一无二的 如下图:其中PID &#xff1a;Process ID&#xff0c;即进程ID 但是我们怎么去在编程中去获取某个…

使用Localstorage(Mapty)

使用Localstorage(Mapty) 首先&#xff0c;我们创建一个函数名&#xff0c;先在app中去调用它 // 为所有的锻炼创建本地存储this._setLocalStorage();之后我们就开始编写这个函数的功能 _setLocalStorage() {localStorage.setItem(workouts, JSON.stringify(this.#workouts));…

如何用细节提升用户体验?

前端给用户反馈是提升用户体验的重要部分&#xff0c;根据场景选择不同的方式可以有效地提升产品的易用性和用户满意度。以下是常见的方法&#xff1a; 1. 视觉反馈 用户执行了某些操作后&#xff0c;需要即时确认操作结果。例如&#xff1a;按钮点击、数据提交、页面加载等。…

OpenHarmony-3.HDF input子系统(5)

HDF input 子系统OpenHarmony-4.0-Release 1.Input 概述 输入设备是用户与计算机系统进行人机交互的主要装置之一&#xff0c;是用户与计算机或者其他设备通信的桥梁。常见的输入设备有键盘、鼠标、游戏杆、触摸屏等。本文档将介绍基于 HDF_Input 模型的触摸屏器件 IC 为 GT91…

旅游资源系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

Docker网络与数据管理

Docker网络与数据管理 1. Docker网络基础&#xff1a;桥接网络、主机网络和自定义网络 Docker提供了多种网络模式&#xff0c;以满足不同应用场景的需求。理解Docker的网络模式对于容器间通信、网络安全性及性能优化至关重要。在Docker中&#xff0c;每个容器都可以连接到不同…

X.game解析柚子币提升速效双向利好和年中历史新低原因

柚子币最新消息&#xff0c;币安宣布将于2024年9月25日21:00左右暂停柚子币网络上的代币存取业务&#xff0c;以全力支持即将到来的柚子币网络升级和硬分叉&#xff0c;这一消息为柚子币的未来发展增添了新的期待和变数。 除了速度的提升&#xff0c;Spring1.0还带来了诸多技术…

数据结构之线性表1

2.1 线性表的定义和基本操作 1.线性结构的特点是&#xff1a;在数据元素的非空有限集中&#xff0c; &#xff08;1&#xff09;存在惟一的一个被称做“第一个”的数据元素&#xff1b; &#xff08;2&#xff09; 存在惟一的一个被称做“最后一个”的数据元素&#xff1b; &a…

Tomcat原理(5)——tomcat最终实现

目录 一、什么是Servlet容器 二、ServletConfigMapping构建实现容器 ServletConfigMapping MyTomcat 三、优化server Server MyTomcat 四、匹配 代码如下&#xff1a; 测试如下&#xff1a; 上一篇博客已经为介绍了servelet的实现 &#xff0c;这篇对上一篇博客进行补…

echarts 常见组件合集

仪表盘组件 <template><div class"w100 h100" ref"chart"></div> </template><script> import resize from "./mixins/resize"; export default {mixins: [resize],props: ["list"],watch: {list: {// …

C/C++代码性能优化技巧的书籍及资料

使用C/C开发的场景&#xff0c;大多对代码的执行的速度&#xff0c;实时性有较高的要求&#xff0c;像嵌入式系统的开发&#xff0c;资源还受限。在算力存储空间有限的MCU上写出简洁又高效的代码实际是一种艺术。软件工程师在代码设计上的这种差距&#xff0c;会反映在产品的性…

FlightAD 解读

一 文章相关信息 出处&#xff1a;ICPADS CCF C 会议&#xff08;代码未开源&#xff09;&#xff0c;COUTA 研究团队的另一研究 二 Methodology 1. 整体架构&#xff1a; 2. Multi-Scale Sampling&#xff08;多尺度&#xff09; 实际上&#xff0c;就是对每个单通道作 “多…

20241216软考架构-------软考案例23答案

每日打卡题案例23 23.【2015年真题】 难度&#xff1a;一般 阅读以下关于系统设计建模的说明&#xff0c;回答下列问题。&#xff08;共25分&#xff09; 【说明】 某公司拟研制一款高空监视无人直升机&#xff0c;该无人机采用遥控一自主复合型控制实现垂直升降。该直升机飞行…