代码之家  ›  专栏  ›  技术社区  ›  victory

外部函数签名中是否需要@PathVariable或@RequestBody?

  •  0
  • victory  · 技术社区  · 5 年前

    我有一个关于惯例的问题。一切正常(感谢上帝),但我不确定,我的AttributeService类方法签名中是否需要注释(@PathVariable和@RequestBody):

    @Autowired
    private AttributeRepository attributeRepository;
    
    public Attribute create(@RequestBody Attribute attribute) {
        return attributeRepository.save(attribute);
    }
    

    @PostMapping(consumes = "application/json")
    public Attribute create(
            @RequestBody Attribute attribute
    ) {
        return attributeService.create(attribute);
    }
    

    我的意思是,如果我浏览我的服务类并且看到黄色的注释,并且我错认为我在控制器类中,这会让我感到困惑:)

    另一个问题,如果他们有相同的名字“创建”可以吗?控制器方法的名称实际上并不重要,因为它是自动调用的,但我询问的是约定。我发现很容易使它们具有相同的名称,所以我知道很快匹配来自控制器的create()在服务中调用create()(如果我有许多类似的方法)。

    1 回复  |  直到 5 年前
        1
  •  1
  •   nic    5 年前

    使用是没有意义的 @RequestBody AttributeService

    在我看来,读 GET ,为创建 POST ,更新 PUT 删除 DELETE 分别是HTTP方法的好方法名。正如你所说,任何名字都可以。

        2
  •  1
  •   Nowhere Man    5 年前

    是的,需要这些注释将响应体或路径变量中的文本自动反序列化到控制器中相应的Java对象。在服务类中,您使用Java对象,因此这些注释在这里是多余的。

    至于命名约定,这取决于你和你的同事:)