在Java中读取POST请求正文的内容(使用REST)

时间:2019-04-01 10:55:43

标签: rest

假设我使用POSTMAN发出POST请求,并且具有json格式的主体。我想读取body的内容并将其传递给方法。怎么做 ?

我可以看到有@ QueryParam,@ PathParam,@ HeaderParam等批注用于读取参数。我不懂得阅读正文。

说身体是
{ "param1":"value1", "param2":"value2", "param3":"value3", }

ServerSide Java代码:

@POST

@Path("/myresource")

public Response addParams( String param1, String param2, String param3) {  do somthing. }

因此,我希望从requestbody中读取此param1,param2,parmam3值。有可能吗?

2 个答案:

答案 0 :(得分:0)

不知道使用哪个Java框架,但是您可以在方法中声明一个@RequestBody参数,并将其“映射”到一个与传入的JSON相对应的POJO(就像@Smutje在评论中所说)。

例如,在Spring,我们这样做,

@PostMapping(value = "/example",
            consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 public ResponseEntity postExample(@RequestBody ExamplePOJO examplePOJO) {

 // Do something
}

答案 1 :(得分:0)

定义一个像这样的类:

public class Foo {

    String param1;
    String param2;
    String param3;

    // Default constructor, getters and setters
}

然后按以下方式使用它:

@POST
@Path("/myresource")
@Consumes(MediaType.APPLICATION_JSON)
public Response addParams(Foo params) {

    String param1 = params.getParam1();
    String param2 = params.getParam2();
    String param3 = params.getParam3();

    ...
}

或者,使用Map<String, String>

@POST
@Path("/myresource")
@Consumes(MediaType.APPLICATION_JSON)
public Response addParams(Map<String, String> params) {

    String param1 = params.get("param1");
    String param2 = params.get("param2");
    String param3 = params.get("param3");

    ...
}

只需确保在应用程序中配置了JSON解析器,例如Jackson或MOXy。