我正在尝试创建一个应该使用POST
请求调用的JSON
servlet。以下应该有效,但没有。可能缺少什么?
@RestController
public class MyServlet {
@PostMapping("/")
public String test(@RequestParam String name, @RequestParam String[] params) {
return "name was: " + name;
}
}
JSON POST:
{
"name": "test",
"params": [
"first", "snd"
]
}
结果:name始终为null。为什么呢?
"Response could not be created: org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'name' is not present"
答案 0 :(得分:6)
一般情况下,我不会在POST方法中传递请求参数。相反,我正在使用DTO将它传递到体内,如:
@RequestMapping(value = "/items", method = RequestMethod.POST)
public void addItem(@RequestBody ItemDTO itemDTO)
然后,您需要将ItemDTO创建为包含必要字段的POJO。
答案 1 :(得分:0)
除了@stzoannos回答之外,如果你不想为json对象创建POJO,你可以使用google GSON库将json解析为JsonObject类,这允许使用与get和set相同的参数方法
JsonObject jsonObj = new JsonParser().parse(json).getAsJsonObject();
return "name is: " + jsonObj.get("name").getAsString();