假设我使用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值。有可能吗?
答案 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。