[英]Java Spring Restcontroller Post
我需要帮助来向Java Spring Restcontroller创建POST请求。
这是我的控制器-
@RestController
@RequestMapping("hedgesimulator/")
public class HedgeSimulatorController {
@RequestMapping(value = "hedgesim/", method = RequestMethod.POST)
@ResponseBody
public HedgeSimulatorLog putHedgeSimulation(
@RequestBody HedgeSimulatorLog hedgeSimulatorLog) {
System.out.println(hedgeSimulatorLog.toJsonString());
return hedgeSimulatorLog;
}
}
我正在使用Chrome的“ Advanced Rest Client”插件将请求发布到我的URL(我确定本地主机运行正常,等等)
我需要在标题中添加什么?
我收到“ HTTP 400-状态报告:客户端发送的请求在语法上不正确”的错误
请帮忙!
要将对象传递给控制器,您必须配置HttpMessageConverter,该对象保留此对象的序列化和反序列化。 例如,如果要将对象作为JSON传递给控制器,请在spring config文件的mvc声明中将MappingJackson2HttpMessageConverter设置为参数。
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
如果http消息转换器配置正确,则可能是请求的格式不正确。
@RequestMapping(value =“ / hedgesim /”,方法= RequestMethod.POST)
请尝试以下操作,希望您可以解决此问题:
由于您正在使用@RestController
批注,因此无需再次使用@ResponseBody
批注,这是多余的。
如果您使用的是Spring Boot,请确保已添加以下依赖项。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
如果项目不是春季启动,则为jackson添加依赖项: com.fasterxml.jackson.databind.ObjectMapper
为了确保请求主体正确,您可以做的是,首先执行请求方法,获取JSON响应,为POST传递相同的JSON,因此在创建JSON数据时可以避免某些拼写错误/人为错误。
希望能帮助到你。
您可以进行以下检查。
MappingJackson2HttpMessageConverter
。 默认情况下,如果您在类路径中有jar,Spring将注册此转换器。 @ResponseBody
则无需使用@RestController
。 因此将其删除。 有关使用Spring 4.0
创建和使用REST服务的完整示例,您可以访问Techno Spots 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.