Правила создания REST-сервисов, примеры, шаблоны для продакшн-кода в Spring Boot

Добро пожаловать, это мой первый вопрос в стеке, так что всем привет.

Я совершенно новичок в Spring Boot и REST API, и мне нужно создать проект с хорошим шаблоном проекта (пакеты, классы, интерфейсы) и хорошими шаблонами проекта, но я никогда не видел ни одного проекта REST в SpringBoot. В этом случае я хотел бы попросить вас описать некоторые хорошие привычки, правила, шаблоны и пример REST Api, чтобы ПОЛУЧИТЬ некоторые данные и протестировать некоторые случаи использования. Я был бы признателен, например, за источник из github или ссылок на учебники. Короткие вопросы в конце:

1) Каким должно быть поведение API, когда запрос не имеет результата? Пустая страница или ошибка в статусе заголовка или что-то еще?

2) Как должно вести себя API, если запрос неправильный (не существует)?

Спасибо за ответы и пожелания,

Камиль


person Magmaruss    schedule 26.03.2018    source источник
comment
Начните с этого spring.io/guides/gs/rest-service.   -  person Victor Gubin    schedule 26.03.2018


Ответы (1)


Spring предназначен только для предоставления REST способом Spring. В этом нет ничего философски ОТДЫХА. Он не разработан специально для REST, а предназначен для поддержки хорошего дизайна REST.

Некоторые вещи, которые следует учитывать для хорошего дизайна REST в целом:

3 уровня ОТДЫХА:

Модель зрелости Ричардсона
Три уровня модели зрелости REST

поставляется с некоторыми примерами кода:
ETags для REST с Spring

Зачем устанавливать ETags к НЕОБХОДИМОМУ требованию, если у вас уже есть ресурс?

Понимание HATEOAS

Что касается возврата пустого результата, это ошибка? Исключительно ли не найти что-то? Если нет, не вызывайте исключение и возвращайте ошибку. То, что вы вернете, зависит от того, как вы хотите справиться с обычной ситуацией, когда поиск ничего не возвращает. Вы можете вернуть 404 с простым объяснением JSON, но 404 не нуждается в объяснении.

Запрос несуществующей конечной точки очевиден, запрос даже не дойдет до вас, так как сервер вернет 404.

Вопрос об «ошибке» в целом зависит от домена, который представляет REST. Поиск, который ничего не находит, не является ошибкой. Поиск по полю «имя», когда в домене нет поля «имя», является ошибкой клиента и исключением.

Таким образом, есть в основном 3 области для изучения.

  1. Концепции REST в целом (глаголы, уровни, гипермедиа и т. д.)
  2. Как Spring поддерживает эти концепции REST
  3. Как возвращать ответы (JSON, XML?) и обрабатывать ошибки, когда клиенты взаимодействуют с вашим доменом через конечные точки REST.
person codebrane    schedule 26.03.2018