【日常笔记】Spring boot:编写 Content type = ‘text/plain‘ 接口

一、项目场景:

接口:Context-Type:text/plain
方式:POST

项目场景:硬件回调接口
在这里插入图片描述


二、实战

@PostMapping(value = "/xx/xxx", consumes = "text/plain" )

2.1、接口

    /*** @return String* @time 2024年12月4日*/@PostMapping(value = "/xx/xxx", consumes = "text/plain")@ApiOperation(value = "物data-接入", notes = "作者:lj")public String djData(@RequestBody String data) throws Exception {data = StringUtils.replace(data,"\n","");DianjiangData djData = JSON.parseObject(data, DianjiangData.class);log.info("【物候】点将-摄像日期:{}->{}", djData.getImgDatetime(), data);return "OK";}

2.2、实体类

@NoArgsConstructor
@Data
public class DianjiangData {@ApiModelProperty(name = "cameraID", value = "相机 ID ")@JsonProperty("cameraID")private String cameraID;@DateTimeFormat(pattern = "yyyyMMddHHmmss")@JsonFormat(pattern = "yyyyMMddHHmmss", timezone = "UTC+8")@ApiModelProperty(name = "imgDatetime", value = "摄像日期时间")@JsonProperty("imgDatetime")private Date imgDatetime;@ApiModelProperty(name = "meanNDVI", value = "归一化植被指数,范围[-1,1],保留8位小数")@JsonProperty("meanNDVI")private Double meanNDVI;@ApiModelProperty(name = "roiNdvi", value = "中心区域归一化植被指数,范围[-1,1],保留8位小数")@JsonProperty("roiNdvi")private Double roiNdvi;//注:图片上传名称规则:rgb图片名称以[***-rgb.jpg/jpeg]结尾,近红外图片名称以[***-nir.jpg/jpeg]结尾@ApiModelProperty(name = "name", value = "图像名称")@JsonProperty("name")private String name;@ApiModelProperty(name = "gcc", value = "GCC 值-物候指数,范围[-1,1],保留8位小数")@JsonProperty("gcc")private Double gcc;@ApiModelProperty(name = "gvi", value = "GVI 值-物候指数,范围[-1,1],保留8位小数")@JsonProperty("gvi")private Double gvi;@ApiModelProperty(name = "rcc", value = "相对红度指数,范围[-1,1],保留8位小数")@JsonProperty("rcc")private Double rcc;@ApiModelProperty(name = "bcc", value = "相对蓝度指数,范围[-1,1],保留8位小数")@JsonProperty("bcc")private Double bcc;@DateTimeFormat(pattern = "yyyyMMddHHmmss")@JsonFormat(pattern = "yyyyMMddHHmmss", timezone = "UTC+8")@ApiModelProperty(name = "exposure_time", value = "曝光时间")@JsonProperty("exposure_time")private Date exposureTime;@ApiModelProperty(name = "fileSize", value = "图像大小,单位 KB")@JsonProperty("fileSize")private Long fileSize;}

三、常见问题:

1、springboot拦截器引起的错误:Content type ‘text/plain;charset=UTF-8’ not supported

1.1、原因分析

整合了springboot拦截器

public class WebConfig implements WebMvcConfigurer {
/*** 添加自定义会覆盖默认转换器*/@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {// 将定义的时间格式转换器添加到转换器列表中,这样jackson格式化时候但凡遇到Date类型就会转换成定义的格式converters.add(jackson2HttpMessageConverter());}public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() {MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();ObjectMapper mapper = new ObjectMapper();// 包含空字段// mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);// 输出时间格式mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));// 输出Long格式为StringSimpleModule simpleModule = new SimpleModule();simpleModule.addSerializer(Long.class, ToStringSerializer.instance);simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);mapper.registerModule(simpleModule);converter.setObjectMapper(mapper);// converter.setSupportedMediaTypes(getSupportedMediaTypes());return converter;}}

1.2、解决方案:

1、简单明了的解决办法就是,不要覆盖原来的序列化器,而是继承并添加

/*** 添加自定义消息转换器不覆盖默认转换器* @param converters*/@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {System.out.println(converters.toString());// 将定义的时间格式转换器添加到转换器列表中,这样jackson格式化时候但凡遇到Date类型就会转换成定义的格式converters.add(jackson2HttpMessageConverter());}

2、精准定位的解决办法是:添加相应的序列化器
如添加上述的:org.springframework.http.converter.StringHttpMessageConverter@b2e4d8

  /*** 添加自定义会覆盖默认转换器*/@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {// 将定义的时间格式转换器添加到转换器列表中,这样jackson格式化时候但凡遇到Date类型就会转换成定义的格式converters.add(jackson2HttpMessageConverter());// 添加字符串序列化器converters.add(new StringHttpMessageConverter());}

参考: springboot拦截器引起的错误

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

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

相关文章

光伏智能巡检

无人值守光伏巡检解决方案 1.任务制定 规划巡检任务&#xff0c;定时执行&#xff0c;自动放飞、收纳、充电&#xff0c;随时待命 2.自动起飞、巡航 无人机按照既定巡检任务&#xff0c;自主作业&#xff0c;多场景自适应&#xff0c;航飞视频实况直播。 3.智能分析 对无人…

【Isaac Lab】Ubuntu22.04安装英伟达驱动

目录 1.1 禁用nouveau驱动 1.2 安装必要的依赖项 1.3 下载安装 1.4 查看是否安装成功 1.5 安装CUDA 1.5.1 下载 1.5.2 按照提示进行下载安装 1.5.3 添加环境变量 1.5.4 测试CUDA是否安装成功 1.1 禁用nouveau驱动 输入以下命令打开blacklist.conf文件 sudo vim /etc…

深入C语言文件操作:从库函数到系统调用

引言 文件操作是编程中不可或缺的一部分&#xff0c;尤其在C语言中&#xff0c;文件操作不仅是处理数据的基本手段&#xff0c;也是连接程序与外部世界的重要桥梁。C语言提供了丰富的库函数来处理文件&#xff0c;如 fopen、fclose、fread、fwrite 等。然而&#xff0c;这些库…

Word2Vec 模型 PyTorch 实现并复现论文中的数据集

详细注解链接&#xff1a;https://www.orzzz.net/directory/codes/Word2Vec/index.html 欢迎咨询&#xff01;

Vue中纯前端实现导出简单Excel表格的功能

Vue 前端Excel导出 Vue中纯前端导出简单Excel表格的方法(使用vue-json-excel插件) 前言 在许多的后台系统中少不了导出Excel表格的功能&#xff0c;在项目中纯前端使用vue-json-excel插件来实现简单Excel表格的导出功能。 使用方法 1、安装依赖 npm install vue-json-exc…

「数据结构详解·十五」树状数组

「数据结构详解一」树的初步「数据结构详解二」二叉树的初步「数据结构详解三」栈「数据结构详解四」队列「数据结构详解五」链表「数据结构详解六」哈希表「数据结构详解七」并查集的初步「数据结构详解八」带权并查集 & 扩展域并查集「数据结构详解九」图的初步「数据结构…

复合机器人为生产提供精准的建议和决策支持

在现代化生产的浪潮中&#xff0c;智能复合机器人以其卓越的性能和高度智能化特点&#xff0c;正成为保障生产安全与可靠性的重要力量。 智能复合机器人具备精确的感知、判断和决策能力&#xff0c;能够在复杂的生产环境中自主导航、精确操作&#xff0c;避免了人为因素可能导致…

实现按键按下(低电平)检测到下降沿

按照流程进行编程 步骤1&#xff1a; 初始化函数 包括时基工作参数配置 输入通道配置 更新中断使能 使能捕获、捕获中断及计数器 HAL_TIM_IC_Init(&ic_handle) //时基参数配置 HAL_TIM_IC_ConfigChannel(&ic_handle,&ic_config,TIM_CHANNEL_2) //输…

软件开发中的三层结构

一、三层结构概述 在软件开发中&#xff0c;三层结构&#xff08;Three - Tier Architecture&#xff09;是一种常见的软件架构模式。它将软件系统分为三个主要的层次&#xff0c;即表示层&#xff08;Presentation Layer&#xff09;、业务逻辑层&#xff08;Business Logic L…

【MQ】大白话告诉你什么是MQ,没有比这还详细还易懂的文章了吧,以RabbitMQ为例,从小白到大神

目录 分布式系统通信方式 MQ选型与应用场景 应用场景&#xff08;优势&#xff09; RabbitMQ工作模型 RabbitMQ简介 RabbitMQ 工作模型&#xff08;流程&#xff09;​编辑 Docker安装配置RabbitMQ RabbitMQ管理控制台 RabbitMQ 简单模式构建生产者 RabbitMQ 简单模式…

RTMP推流平台EasyDSS在无人机推流直播安防监控中的创新应用

无人机与低空经济的关系密切&#xff0c;并且正在快速发展。2024年中国低空经济行业市场规模达到5800亿元&#xff0c;其中低空制造产业占整个低空经济产业的88%。预计未来五年复合增速将达到16.03%。 随着科技的飞速发展&#xff0c;公共安防关乎每一个市民的生命财产安全。在…

PCIE概述

PCIE概述 文章目录 PCIE概述前言一、应用场景二、PCIE理论2.1 硬件2.2 拓扑结构&#xff1a;处理器和设备之间的关系2.3 速率2.4 层次接口2.5 四种请求类型2.5.1 bar空间2.5.2 memory2.5.3 IO2.5.4 configuration2.5.5 message 前言 参考链接&#xff1a; pcie总线知识点解析 …

SpringBoot SPI

参考 https://blog.csdn.net/Peelarmy/article/details/106872570 https://javaguide.cn/java/basis/spi.html#%E4%BD%95%E8%B0%93-spi SPI SPI(service provider interface)是JDK提供的服务发现机制。以JDBC为例&#xff0c;JDK提供JDBC接口&#xff0c;在包java.sql.*。MY…

超详细!Jmeter性能测试

前言 性能测试是一个全栈工程师/架构师必会的技能之一&#xff0c;只有学会性能测试&#xff0c;才能根据得到的测试报告进行分析&#xff0c;找到系统性能的瓶颈所在&#xff0c;而这也是优化架构设计中重要的依据。 测试流程&#xff1a; 需求分析→环境搭建→测试计划→脚…

快速本地化部署 OnlyOffice服务 ( Linux+Docker)

文章目录 一、OnlyOffice介绍&#x1f4d6;二、集成OnlyOffice&#x1f9e9;2.1 环境准备&#x1f5a5;️2.2 搜索镜像2.3 拉取镜像2.4 查看镜像2.5 创建容器2.6 进入容器配置2.7 重启服务2.8 添加字体字号2.9 测试OnlyOffice服务 三、在线预览office文档四、Cpolar内网穿透 一…

加密--03--MD5-- JAVA运用(hutool工具包)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 hutool1.简介2.pom.xml3.Hutool-crypto概述4.MD5 加密 案例11.hutool依赖2.用户表3.加密方法4.业务代码 hutool https://www.hutool.cn/docs/#/ 1.简介 2.pom.xml …

CSS 实现带tooltip的slider

现代 CSS 强大的令人难以置信 这次我们来用 CSS 实现一个全功能的滑动输入器&#xff0c;也就是各大组件库都有的slider&#xff0c;效果如下 还可以改变一下样式&#xff0c;像这样 特别是在拖动时&#xff0c;tooltip还能跟随拖动的方向和速度呈现不同的倾斜角度&#xff0c…

关于SAP Router连接不稳定的改良

这个也是网上看来的&#xff0c;之前在用的时候也在想是不是建立一个长连接&#xff0c;就不至于断线。今天正好看到。 关于SAP Router连接不稳定的改良 我们在使用SAPRouter时经常会碰到断线&#xff0c;其发生原因有很多&#xff0c;如&#xff1a;网络不稳定、操作间隔时间…

docker 搭建自动唤醒UpSnap工具

1、拉取阿里UpSnap镜像 docker pull crpi-k5k93ldwfc7o75ip.cn-hangzhou.personal.cr.aliyuncs.com/upsnap/upsnap:4 2、创建docker-compose.yml文件&#xff0c;进行配置&#xff1a; version: "3" services:upsnap:container_name: upsnapimage: crpi-k5k93ldwf…

Python课设-谁为影狂-豆瓣数据【数据获取与预处理课设】

&#x1f3c6; 作者简介&#xff1a;席万里 ⚡ 个人网站&#xff1a;https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜&#xff0c;同时略懂Vue与React前端技术&#xff0c;也了解一点微信小程序开发。 &#x1f37b; 对计算机充满兴趣&#xff0c;愿意并且希望学习更多的技…