我正在编写一个Springboot REST端点,并希望使用XML或JSON请求来提供简单服务。无论哪种情况,我都希望Spring构造一个@RequestBody pojo而不注释任何POJO。这个可以吗?安全?表演者?
我正在阅读this,该书告诉我有关异常的配置。对我来说,这意味着如果我将请求结构化为包含确切的名称和大小写,因为我要填充@RequestBody的POJO成员变量将能够创建我的类SomeRequest。
如果这是我的REST端点:
@RequestMapping(value = GET_FOR_SOMETHING, method = RequestMethod.POST,
consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE},,
produces = {MediaType.APPLICATION_JSON_VALUE})
public @ResponseBody
StatusResponse<Boolean> getMpdForReqest(@RequestBody SomeRequest request)
这是我的POJO:
public class SomeRequest {
String one;
String two;
public String getOne() {
return one;
}
public void setOne(String one) {
this.one = one;
}
public String getTwo() {
return two;
}
public void setTwo(String two) {
this.two = two;
}
}
我的JSON请求:
{
"one": "str",
"two": "str"
}
我的XML请求:
<SomeRequest>
<one>str</one>
<two>str</two>
</SomeRequest>
我的问题是:为什么我不应该这样做或完全正常?
谢谢大家。
答案 0 :(得分:2)
TLDR; 很好。
可以吗?安全?表演者?
是的,如果您考虑程序效率,它的性能和表亲一样出色。
如果考虑到Programm的效率,则效率会高得多,因为开发人员不必处理大量注释。
谈到Programm的效率,我鼓励您使用Lombok项目,而不要使用大量的getter和setter方法来限制POJO,这就是现在很酷的孩子们每天要做的事情。
抓住
这将正常工作,只要您的json字段是一个单词且小写即可。
当您使用多字字段名称时,Java标准为camelCase
,通常JSON标准为snake_case
。在这种情况下,您可以具有“类级别的注释”(每个类一个,因此不多难看)。或者,由于使用的是Spring Boot,因此可以使用应用程序范围的属性(spring.jackson.property-naming-strategy = SNAKE_CASE
)。
如果您有一些奇怪的json字段名,并且它们之间有空格,则可能需要使用@JsonProperty
批注。记住,这是一个非常有效的json
{ "just a name with a space" : "123" }
答案 1 :(得分:0)
POJO为RequestBody
的效果很好。只需注意,Spring将为每个无法映射到400 - Bad Request
注释对象的请求返回@RequestBody
。