如何调用仅接受字符串值作为请求主体参数的端点

时间:2019-02-22 13:05:31

标签: java spring web-services curl postman

我已经定义了一种将字符串值作为请求正文参数接受的方法,如下所示

@RequestMapping(value="/stringParam",method=RequestMethod.POST,consumes=MediaType.TEXT_PLAIN)
    public String stringMethod(@RequestBody String stringParam){

        return stringParam;
    }

我尝试使用以下curl命令调用该端点

curl -X POST  "http://localhost:7979/choudhury-rest/rest/book/stringParam" -d '\"ravi\"' -H "Content-Type: application/json"

这给了我这个错误

The request sent by the client was syntactically incorrect.

在那之后,我尝试了另一种方式

curl -X POST  "http://localhost:7979/choudhury-rest/rest/book/stringParam" -d 'stringParam=\"ravi\"' -H "Content-Type: application/json"

这也给了我这个错误

The request sent by the client was syntactically incorrect.

谁能帮助我该如何调用该方法(我不知道我们是否可以定义一个接受原始值(int,long等)作为请求正文参数的rest方法)

1 个答案:

答案 0 :(得分:0)

我看到了一些可以更改以完成这项工作的事情。

您必须在控制器中更改消耗参数,使用MediaType.TEXT_PLAIN_VALUE而不是MediaType.TEXT_PLAIN

@RequestMapping(value="/stringParam", method=RequestMethod.POST, consumes=MediaType.TEXT_PLAIN_VALUE)
public String stringMethod(@RequestBody String stringParam){
    return stringParam;
}

使用curl时,通过包含标题Content-Type:text / plain来定义仅发送文本

$ curl -X POST  "http://localhost:8080/choudhury-rest/rest/book/stringParam" -d "ravi" -H "Content-Type: text/plain"

结果

$ curl -X POST  "http://localhost:8080/choudhury-rest/rest/book/stringParam" -d "ravi" -H "Content-Type: text/plain"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100     8  100     4  100     4   4000   4000 --:--:-- --:--:-- --:--:--  8000ravi

干杯!

注意:我在SpringBoot v2.0.5.RELEASE中测试了此控制器

enter image description here