Соглашение об именовании конечных точек API

#spring #api #java-8 #endpoint #spring-restcontroller

#spring #API #java-8 #конечная точка #spring-restcontroller

Вопрос:

У меня есть эта сущность.

 @Entity
public class Dealer{
    @EmbeddedId
    private DealerIdKey idKey;
   
    @NotNull
    
    private LocalDate date;
}
@Embeddable
@Data
public class DealerIdKey implements Serializable {

    private static final long serialVersionUID = 1L;
    @NotNull
    @Size(max = 6)
    private String code;
    @NotNull
    @Size(max = 4)
    private String des;
}
 

Я хочу создать сопоставление удаления в контроллере

 @Autowired
private DealerRepository repo;
@DeleteMapping("/dealer/{id}")
    @ResponseBody
    public void delete(@NotNull @PathVariable(name = "id", required = true) DealerIdKey id) {
        repo.deleteById(id);
    }
 

Какой должна быть конечная точка контроллера?
Или то, как я написал, — это правильный путь?

Ответ №1:

Поскольку ваше действие конечной точки (HTTP action) имеет тип DELETE, вы уже объявляете о своем намерении с помощью своей конечной точки. Так что то, как вы написали конечную точку, на мой взгляд (и по общему соглашению), правильно.

Но используйте любое соглашение, которое уже используется в вашем проекте, если у вас уже есть действующее соглашение. Последовательность — это ключ к успеху.

Если это чистый лист, не добавляйте имена функций CRUD в конечную точку.

Я бы прочитал этот ресурс, если вам нужен более подробный ответ. Но главный вывод — это сохранение последовательности в рамках проекта. Так что, если вы выбрали это соглашение, придерживайтесь его.