wordpress多域名多站点安徽住房和城乡建设厅网站首页

diannao/2026/1/26 9:22:40/文章来源:
wordpress多域名多站点,安徽住房和城乡建设厅网站首页,gta5买房网站建设中,购物网站网页设计重学SpringBoot3-内容协商机制 ContentNegotiationConfigurer接口配置内容协商URL参数Accept头使用Url扩展名 自定义内容协商格式步骤1: 注册自定义媒体类型步骤2: 实现HttpMessageConverter接口步骤3: 使用自定义HttpMessageConverter 注意点 在 Spring Boot 3 中#xff0c;… 重学SpringBoot3-内容协商机制 ContentNegotiationConfigurer接口配置内容协商URL参数Accept头使用Url扩展名 自定义内容协商格式步骤1: 注册自定义媒体类型步骤2: 实现HttpMessageConverter接口步骤3: 使用自定义HttpMessageConverter 注意点 在 Spring Boot 3 中内容协商(Content Negotiation)是一个非常重要的概念特别是在构建 RESTful API 时。内容协商机制允许客户端和服务器就如何交换资源的数据格式达成协议。简单来说它允许客户端通过请求头指定它们希望接收响应的格式如 JSONXML 等服务器基于这些信息来决定以什么格式返回数据。 ContentNegotiationConfigurer接口 org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer ContentNegotiationConfigurer 是 Spring 框架中的一个接口用于自定义内容协商策略主要通过以下几种方式来实现 URL参数: 通过 URL 参数来指定响应格式例如?formatjson。Accept头: 通过 Accept 请求头来指定希望接收的响应类型这是HTTP规范推荐的方式。扩展名: 通过 URL 的扩展名来指定响应的格式。例如.json 表示希望响应为 JSON 格式.xml 表示希望响应为 XML 格式。 配置内容协商 在 Spring Boot 3 中你可以在 application.properties 或 application.yml 文件中进行基本的内容协商配置 # 开启基于请求参数的内容协商功能默认此功能不开启 spring.mvc.contentnegotiation.favor-parametertrue # 指定内容协商时使用的参数名。默认是 format spring.mvc.contentnegotiation.parameter-namemediaType # 用于设置支持的内容协商(Content Negotiation)的媒体类型 spring.mvc.contentnegotiation.media-types.jsonapplication/json spring.mvc.contentnegotiation.media-types.xmlapplication/xml或者通过配置类来实现更复杂的逻辑没错就是之前讲过的通过重新 WebMvcConfigurer 接口方法实现自定义配置 public interface WebMvcConfigurer {default void configureContentNegotiation(ContentNegotiationConfigurer configurer) {}// 其他方法 }以下是一个示例演示如何通过配置类来配置内容协商策略 Configuration public class WebConfig implements WebMvcConfigurer {Overridepublic void configureContentNegotiation(ContentNegotiationConfigurer configurer) {configurer.favorParameter(true).parameterName(mediaType).ignoreAcceptHeader(false).useRegisteredExtensionsOnly(false).defaultContentType(MediaType.APPLICATION_JSON).mediaType(json, MediaType.APPLICATION_JSON).mediaType(xml, MediaType.APPLICATION_XML);} }在这个配置中 favorParameter(true)允许使用 URL 参数进行内容协商。parameterName(mediaType)指定 URL 参数的名称。ignoreAcceptHeader(false)不忽略 Accept 头即同时支持Accept头和URL参数。useRegisteredExtensionsOnly(false)不仅仅基于已注册的扩展进行格式匹配。defaultContentType(MediaType.APPLICATION_JSON)设置默认的响应类型为JSON。mediaType(json, MediaType.APPLICATION_JSON) 和 mediaType(xml, MediaType.APPLICATION_XML)注册 URL 扩展名到 MIME 类型的映射。 注意如果要支持输出 XML 需要 pom 文件引入 jackson 包 dependencygroupIdcom.fasterxml.jackson.dataformat/groupIdartifactIdjackson-dataformat-xml/artifactId/dependencyURL参数 需要携带查询字符串 ?mediaType Accept头 修改请求头使用 postman 或者 apifox 工具。 使用Url扩展名 从Spring Framework 5.3开始官方推荐使用其他内容协商机制如请求头Accept而非扩展名因为路径扩展可能会引起一些安全和使用上的问题。因此在实际应用中建议评估使用扩展名方式的必要性。 配置了基于扩展名的内容协商配置文件已经不支持这种配置所有改成新建配置类的方式 Configuration public class WebConfig implements WebMvcConfigurer {Overridepublic void configureContentNegotiation(ContentNegotiationConfigurer configurer) {configurer.favorPathExtension(true).favorParameter(false).ignoreAcceptHeader(false).useRegisteredExtensionsOnly(true).mediaType(json, MediaType.APPLICATION_JSON).mediaType(xml, MediaType.APPLICATION_XML);} }自定义内容协商格式 自定义内容协商格式主要涉及到两个方面一是自定义支持的媒体类型Media Types二是自定义对这些媒体类型的处理。 在 Spring Boot 3 中自定义内容协商格式通常需要以下几个步骤 注册自定义媒体类型你可以通过配置类来注册自定义的媒体类型让 Spring MVC 知道你打算支持哪些额外的格式。实现 HttpMessageConverter 接口对于每种你想支持的媒体类型你需要提供一个相应的HttpMessageConverter实现用于序列化和反序列化数据。配置 Spring MVC 以使用你的自定义 HttpMessageConverter最后你需要在 Spring MVC 配置中注册你的 HttpMessageConverter 实现以确保Spring MVC 会使用它们进行请求和响应的处理。 步骤1: 注册自定义媒体类型 假设你想添加对 application/yaml 这种媒体类型的支持首先需要在配置类中注册这种媒体类型 Configuration public class WebConfig implements WebMvcConfigurer {Overridepublic void configureContentNegotiation(ContentNegotiationConfigurer configurer) {configurer.mediaType(yaml, MediaType.valueOf(application/x-yaml));} }或者使用配置文件 spring.mvc.contentnegotiation.media-types.yamlapplication/x-yaml还需要引入 Jackson 库的 YAML 数据格式支持 dependencygroupIdcom.fasterxml.jackson.dataformat/groupIdartifactIdjackson-dataformat-yaml/artifactId /dependency步骤2: 实现HttpMessageConverter接口 接下来需要创建一个 HttpMessageConverter 实现用于处理 YAML 格式的数据。这里需要实现 read 和 write 方法分别用于反序列化和序列化数据。例如使用 YamlMapper这是一个假设的类实际上你可能需要使用例如SnakeYAML之类的库 package com.coderjia.springboot304web.config;import com.fasterxml.jackson.dataformat.yaml.YAMLMapper; import org.springframework.http.HttpInputMessage; import org.springframework.http.HttpOutputMessage; import org.springframework.http.MediaType; import org.springframework.http.converter.AbstractHttpMessageConverter; import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.http.converter.HttpMessageNotWritableException;import java.io.IOException;/*** author CoderJia* create 2024/3/9 下午 10:32* Description**/ public class YamlHttpMessageConverter extends AbstractHttpMessageConverterObject {private final YAMLMapper yamlMapper new YAMLMapper();public YamlHttpMessageConverter() {super(MediaType.valueOf(application/x-yaml));}Overrideprotected boolean supports(Class? clazz) {// 这里简化了实现实际上你可能需要更复杂的逻辑来决定你的converter支持哪些类return true;}Overrideprotected Object readInternal(Class? clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {// 从HttpInputMessage中读取并解析YAML格式的数据return yamlMapper.readValue(inputMessage.getBody(), clazz);}Overrideprotected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {// 将给定的对象写入HttpOutputMessage的body中yamlMapper.writeValue(outputMessage.getBody(), object);} } 步骤3: 使用自定义HttpMessageConverter 最后需要在 Spring MVC 配置中注册这个新的 HttpMessageConverter。这通常是在一个配置类中完成通过重写 configureMessageConverters方法 Configuration public class WebConfig implements WebMvcConfigurer {Overridepublic void configureContentNegotiation(ContentNegotiationConfigurer configurer) {configurer.mediaType(yaml, MediaType.valueOf(application/x-yaml));}Overridepublic void configureMessageConverters(ListHttpMessageConverter? converters) {converters.add(new YamlHttpMessageConverter());}}这样当客户端请求以 application/x-yaml 格式接收数据时比如通过设置Accept: application/x-yaml头Spring MVC 就会使用你的 YamlHttpMessageConverter 来序列化响应数据为YAML格式 注意点 内容协商的配置和实现方式可能因 Spring Boot 版本的不同而略有变化。上述示例适用于 Spring Boot 3但在实际应用中还需要根据具体的需求和环境来调整配置。

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

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

相关文章

html手机网站如何制作wordpress论坛模版

前言 本章我们基于重构的方式进行一个 MVVM 的实战,我们将一个新闻列表的普通实现,一步一步的改造成 MVVM 的架构模式,一共分为上中下三个章节,本章继续上一章,开始中篇的讲解; 控件化 我们本章向控件化进…

常用的网站开发语言有哪些个人域名备案查询

css高度设置为auto后,设置的边框 ie正常 火狐 就没有边框了,解决方法 之前是这样写的 #right_bottom { width: 790px; height:auto; border: #EBEBEB 1px solid; } 最后添加了一个overflow: hidden;属性ok了,ie火狐都可以显示边框 即: #right_bottom {…

做的网站加载太慢怎么办注册网站有什么风险吗

公司一台服务器,上面装了filezilla server后,按平常配置好了,但是在本地用FTP客户端不管怎么连接都连接不上,本地FTP客户端总提示连接失败,远程filezilla server的界面也没有提示有人连接, 仔细看了一下&am…

桂林哪里做网站东莞网站建设公司排名

笔记本电脑的电池健康状况至关重要。延长电池寿命可以帮你省下不少钱。对于长时间充电的Windows 11笔记本电脑用户来说,将电池电量限制在80%是很重要的。 虽然操作系统没有提供设置自定义电池充电限制的内置方法,但仍有一些方法可以在Windows 11中配置电池设置,并将其限制在…

充值选建设银行打不开网站网站安全建设的重要性

参考《计算机组成》(北京大学 MOOC) 1 异常与中断的来源(为什么需要中断) 首先,说明一下异常和中断这两个概念。 它们两个唯一的区别,就是,没有什么区别。只是不同的地方不同的时间不同的人的…

南京企业建站系统模板nodejs 做网站

一、基于域名的虚拟主机 修改配置文件/usr/local/nginx/conf/nginx.conf 创建新的虚拟主机的根目录和默认网页index.html 重新加载nginx的配置文件 查看两个虚拟主机 因为这两个域名是随便写的,所以需要修改windows系统的hosts文件,让电脑能够解析www.a.…

常州网站seo做网站需要空间

450. 删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可…

手游门户网站建设网站开发必须要做前端吗

我们借鉴之前抓取台风路径数据的例子,试一试抓取降水量数据:之前我们访问过这个网站,也试着抓取过数据,不过在谷歌浏览器中我们只能够找到两天的数据,但是通过台风路径数据抓取,我们猜想只要我们向服务器提…

网站轮播效果怎么做的网站建设首选玖艺建站信得过

目录 一、concat() 二、join() 三、push() 四、pop() 五、shift() 六、unshift() 七、slice() 九、substring() 和 substr() 十、sort 排序 十一、reverse() 十二、indexOf 和 lastIndexOf 十三、every 十四、some 十五、filter 十六、map ES6新增新操作数组的…

网站怎么做一级域名跳转南京公司网站设计定制

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐如果觉得文章写的不错,欢迎点个关注一键三连😉有写的不好的地方也欢迎指正,一同进步😁…

成都工程建设项目网站做网站怎么签订协议

ArcGIS 9.2补丁真是不少,快把开发人员给淹没了,之前版本的ArcGIS从来没有发布过sp4,现在已经通知马上要发布sp5,修正了大量desktop、engine、server上的bug,估计这应该是9.2最后一组补丁了,记得上次Jack来北…

在网站中动态效果怎么做小程序个人开发全过程

文章目录 优先队列相关操作堆化入堆出堆获取堆顶元素小根堆与大根堆 华为OD算法/大厂面试高频题算法练习冲刺训练 优先队列相关操作 注意,优先队列(priority queue)也叫做堆(heap)。谈到优先队列时,一般强调…

专门做化妆品平台的网站有哪些深圳网络科技有限公司有哪些

前言用了那么多年的express.js,终于有时间来深入学习express,然后顺便再和koa2的实现方式对比一下。老实说,还没看express.js源码之前,一直觉得express.js还是很不错的,无论从api设计,还是使用上都是可以的…

董家渡街道网站建设蚌埠市建设工程质监站网站

试卷编号:0134 期末考 劳动法学试题答案 1、劳动法的调整对象 2、竞业限制 3.职工培训 4.行政责任 二、单项选择题(每题4分,共20分) 考生注意:必须将正确答案填入表格中,否则该…

企业网站空间多大合适网站qq访客统计

802.11w(PFM) Protected Management Frames,802.11w协议主要基于现有的对数据报文的加密形式,对管理帧进行类似的加密。802.11w需要加密的管理帧包括解关联帧、去认证帧及强壮Action帧。 802.11k(RRM) Radio Resource …

青岛外贸网站设计松江九亭网站建设

;GET和INCLUDE功能相同 ;功能:引进一个被编译过的文件。 GET option.inc GET memcfg.inc GET 2440addr.inc ;EQU为程序中的常量、标号等定义一个等效的字符名称 ;定义SDRAM工作在Refresh模式,SDRAM有两种刷新方式:autorefresh和selfrefresh&a…

做网站 就上凡科网中国网站设计欣赏

最大连续子矩阵算法 暴力求解不可取 或许可以从 O(n)复杂度内求解最大连续子数组的算法 得到灵感 O(n2)复杂度求最大连续子矩阵和算法: 创建一个新矩阵sum,sum[i][j]存放sun[i][0-j]的和每个候选矩阵由左上角matrix[i][j]和右下角的元素matrix[p][q]确定…

织梦cms 5.6网站地图合肥网站搭建公司哪家好

2024年认证杯C题的已经完成啦,包括参考论文,模型代码,分享给大家~ 问题分析 对于这些问题,我们首先需要确定影响日光辐射降低效应的关键参数,例如海盐气溶胶的浓度、粒子大小、分布以及喷洒高度和范围。同…

做字幕网站微信文章同步到wordpress

转自——http://blog.csdn.net/v_july_v/article/details/7041827 看到kmp是不是立即想到(*ο*) 哇~,那个东西啊,就是拿来放电影的那个啊! 哦,但是这里我们说的并不是那个东西,身为一名C选手,我…

公司网站在哪备案网页广告屏蔽

https://bbs.espressif.com/viewtopic.php?t75242#p100294 https://blog.csdn.net/ydogg/article/details/72598752