繁体   English   中英

Java Spring Restcontroller帖子

[英]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)

请尝试以下操作,希望您可以解决此问题:

  1. 由于您正在使用@RestController批注,因此无需再次使用@ResponseBody批注,这是多余的。

  2. 如果您使用的是Spring Boot,请确保已添加以下依赖项。

      <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 
  3. 如果项目不是春季启动,则为jackson添加依赖项: com.fasterxml.jackson.databind.ObjectMapper

  4. 为了确保请求主体正确,您可以做的是,首先执行请求方法,获取JSON响应,为POST传递相同的JSON,因此在创建JSON数据时可以避免某些拼写错误/人为错误。

希望能帮助到你。

您可以进行以下检查。

  1. 通过一些在线工具(如JSonLint)验证要发送的请求正文。
  2. 检查是否注册了MappingJackson2HttpMessageConverter 默认情况下,如果您在类路径中有jar,Spring将注册此转换器。
  3. 如果使用@ResponseBody则无需使用@RestController 因此将其删除。

有关使用Spring 4.0创建和使用REST服务的完整示例,您可以访问Techno Spots

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM