postman提交json,java后台对象接收不到

本文介绍了解决使用Postman发送请求时遇到415错误的方法。通过添加@RequestBody注解并引入jackson-databind依赖,实现JSON数据与Java对象间的正确转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.postman使用就不多说了,直接上图:postman提交json
我们controller一般是这样接收:
controller接收
这样我们会接收到:
后台接收到结果
没错我们会接收到null,但是postman提交成功。如图:
postman接收返回结果
这时候我们解决办法是给接收参数对象加上一个注解@RequestBody:
对象添加注解
本以为这样就ok了!在此请求出现页面415:
415错误
由描述可以看到:服务端拒绝了请求,不能把你传的参数转换成对应的格式。
然后上网各种查询:

1.在requestmapping注解后加method,produces,consumes属性,失败!
2. 在前端配置页面中配置消息转换器,一顿找依赖包,还是失败。

	<!-- 请求信息转换器  -->
	<bean id="stringHttpMessageConverter"
		class="org.springframework.http.converter.StringHttpMessageConverter" />
	<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射  -->
	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="mappingJacksonHttpMessageConverter" />
				<ref bean="stringHttpMessageConverter" />
				<ref bean="jsonHttpMessageConverter" />
				<ref bean="formHttpMessageConverter" />
			</list>
		</property>
	</bean>

最后,还是一招搞定,缺少json转换成对象的包,在pom文件中添加:

		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.9.8</version>
		</dependency>

在此抱着试试心态:

后台成功
postman返回的结果
最终搞定。
jackson-databind功能就是:对象和json数据互转

### 如何在Java 8 和 Spring Boot 环境中调用 DeepSeek API 并使用 Postman 进行测试 #### 创建 Spring Boot 项目并添加必要依赖 为了使应用程序能够与 DeepSeek 接口交互,需创建新的 Spring Boot 项目,并确保选择了合适的版本以及所需依赖项。对于此目的,推荐使用 Spring Initializr 来初始化项目,选择 `Spring Web`、`Spring Data JPA` 及其他可能需要的组件[^3]。 #### 获取 API Key 并配置应用属性 申请 DeepSeek API Key 是必不可少的操作,这将用于身份验证过程中的授权访问。获得密钥之后,在项目的 `application.yml` 文件内设置相应的参数: ```yaml deepseek: apiKey: "your_api_key_here" url: "https://api.deepseek.com/v1/" ``` 上述配置指定了 API 请求的目标地址和认证所需的令牌[^2]。 #### 编写配置类管理外部化配置 建立一个名为 `DeepSeekConfig.java` 的静态内部类来封装从 YAML 中读取的信息: ```java @ConfigurationProperties(prefix = "deepseek") @Component public class DeepSeekConfig { private String apiKey; private String url; // Getters and Setters omitted for brevity } ``` 这段代码使得可以通过注入的方式方便地获取到之前设定好的 URL 和 API key[^1]。 #### 设计请求/响应数据结构 依据官方文档定义好发送给服务器的数据格式(DTO),还有预期接收到的结果对象。这里假设有一个简单的对话请求体如下所示: ```java @Data @NoArgsConstructor @AllArgsConstructor public class ChatRequest { private String message; } @Data @NoArgsConstructor @AllArgsConstructor public class ChatResponse { private String reply; } ``` 以上两个 POJO 类分别代表了向 DeepSeek 发送的消息内容及其返回的回答。 #### 实现业务逻辑层的服务方法 利用 RestTemplate 构建 HTTP 客户端实例并向指定路径发起 POST 请求;同时捕获异常情况下的错误信息以便调试: ```java @Service public class DeepSeekService { @Autowired private RestTemplate restTemplate; @Autowired private DeepSeekConfig deepSeekConfig; public ChatResponse sendChatMessage(ChatRequest request){ HttpHeaders headers = new HttpHeaders(); headers.setBearerAuth(deepSeekConfig.getApiKey()); HttpEntity<ChatRequest> entity = new HttpEntity<>(request,headers); ResponseEntity<ChatResponse> response = restTemplate.exchange( deepSeekConfig.getUrl() + "/chat", HttpMethod.POST, entity, ChatResponse.class); return response.getBody(); } } ``` 此处展示了如何构建带有适当头信息的有效负载,并执行实际的网络操作以交换消息。 #### 开发 REST 控制器暴露对外接口 为了让前端或其他系统可以触发聊天行为,还需要提供一个公开可用的方法供外界调用。下面是一个基本的例子说明怎样做到这一点: ```java @RestController @RequestMapping("/api/deepseek") public class DeepSeekController { @Autowired private DeepSeekService service; @PostMapping("/chat") public ChatResponse chat(@RequestBody ChatRequest request){ return this.service.sendChatMessage(request); } } ``` 该片段实现了接收来自客户端提交的内容,并转发至后台处理程序的功能。 #### 使用 Postman 测试已部署的应用程序 安装并启动 Postman 工具后,按照下述指南来进行初步检验工作: - 设置目标 URI 地址指向本地运行着的 Spring Boot 应用; - 方法类型应设为 POST; - Body 栏位切换成 raw 模式,并选取 JSON (Application/json) 数据格式; - 输入有效载荷样例 `{ "message": "你好啊!" }`; - 执行发送动作查看结果是否符合预期。 通过这种方式即可快速确认整个流程是否顺畅无误[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值