发布请求-春季启动[RequestBody]与Asp.net [FromBody]

时间:2018-12-14 20:20:26

标签: java spring spring-boot asp.net-web-api

我在spring boot post请求中遇到问题。我有一个使用String参数的API端点,如下所示:

@RequestMapping(method = RequestMethod.POST, value = "/products/add")
public RestMessage addProduct(@RequestBody String name) {
   //Code implementation here   
}

当我从邮递员测试此API端点时,名称参数的填充为 name = "\"value\"" ;

我的邮递员要求为:

Postman Request

我最近是从.net迁移的,如果将其与Web API 2方法进行比较,我将实现为

[Route("products/add")]
public IHttpActionResult Post([FromBody]string name)
{
    //Code implementation here
}

如果我从邮递员测试此终结点,那么我会将名称参数值的简单字符串命名为 name = "value"

如何在Spring Boot中实现完全相同的行为。据我了解,Spring Boot正在考虑将反逗号作为字符串而不是json部分。

如果我以这种格式发送请求 enter image description here

这是结果 This is what happening

已更新:因此,经过几次测试,我发现ASP.net将邮递员字符串值视为字符串对象的行为,它为您忽略了逗号的倒置。但是在Spring引导中,如果您有一个参数作为字符串,并且必须在@RequestBody中传递它,则不要对其进行字符串化。适用于我的示例请求为:

Working request

所以不必费心邮递员中的十字符号。

1 个答案:

答案 0 :(得分:0)

您需要创建一个POJO。

Class NameDTO {
    private String name;
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
       return this.name;
    }
}

@RequestBody名称DTO名称DTO

现在您可以使用

获取名称
name = nameDTO.getName