Java 外部函数签名中是否需要@PathVariable或@RequestBody?
我有一个关于惯例的问题。一切正常(感谢上帝),但我不确定我的AttributeService类方法签名中是否需要注释(@PathVariable和@RequestBody):Java 外部函数签名中是否需要@PathVariable或@RequestBody?,java,rest,jpa,request,annotations,Java,Rest,Jpa,Request,Annotations,我有一个关于惯例的问题。一切正常(感谢上帝),但我不确定我的AttributeService类方法签名中是否需要注释(@PathVariable和@RequestBody): @Autowired private AttributeRepository attributeRepository; public Attribute create(@RequestBody Attribute attribute) { return attributeRepository.save(attri
@Autowired
private AttributeRepository attributeRepository;
public Attribute create(@RequestBody Attribute attribute) {
return attributeRepository.save(attribute);
}
它可能与它们一起工作,也可能不与它们一起工作,但它们在我的@RestController之外有什么用途吗?
控制器方法如下所示(这里我当然需要这些注释):
我的意思是,如果我浏览我的服务类,看到黄色的注释,这会让我感到困惑,我错认为我在控制器类:)
还有一个问题,如果他们有相同的名字“create”可以吗?控制器方法的名称实际上并不重要,因为它是自动调用的,但我要问的是约定。我发现很容易使它们具有相同的名称,所以我很快就知道,来自控制器的create()正在服务中调用create()(如果我有很多这样的方法的话)
谢谢是的,需要这些注释来将响应体或路径变量中的文本自动反序列化到控制器中相应的Java对象。在服务类中,您使用Java对象,因此这些注释在这里是多余的
至于命名约定,这取决于您和您的同行:)是的,需要这些注释将响应体或路径变量中的文本自动反序列化到控制器中相应的Java对象。在服务类中,您使用Java对象,因此这些注释在这里是多余的
至于命名约定,这取决于您和您的同事:)在
属性服务的方法中使用@RequestBody
没有任何意义。任何框架都不会处理此注释
在我看来,read forGET
、create forPOST
、update forPUT
和delete fordelete
分别是HTTP方法的好方法名。正如您所说,任何名称都可以使用。在属性服务的方法中使用@RequestBody
没有任何意义。任何框架都不会处理此注释
在我看来,read forGET
、create forPOST
、update forPUT
和delete fordelete
分别是HTTP方法的好方法名。正如你所说,任何名字都可以
@PostMapping(consumes = "application/json")
public Attribute create(
@RequestBody Attribute attribute
) {
return attributeService.create(attribute);
}