Недавно я изучил спецификацию интерфейса RESTful и использовал Postman, чтобы представить ее. Вот соответствующие спецификации интерфейса RESTful: 1. Что такое RESTful?
REST: это архитектурный стиль веб-сервисов; он использует широко распространенные стандарты и протоколы, такие как HTTP, URI, XML, JSON и HTML. Это легкий, кроссплатформенный и межъязыковой архитектурный дизайн; стиль, а не стандарт. Стандарт – это идея.
RESTful: соответствующий китайский язык — REST; веб-служба Restful — это обычное приложение REST, которое представляет собой веб-службу, соответствующую стилю REST; веб-служба REST — это своего рода архитектура ROA (ресурсно-ориентированная архитектура). ) [Рекомендация: веб-интерфейс]
Суть RESTful — это стиль архитектуры программного обеспечения. Ядро ориентировано на ресурсы и решает следующие задачи:
Уменьшите сложность разработки
Улучшение масштабируемости системы
2. Разница между SOAP и REST:
SOAP (простой протокол доступа к объектам): спецификация протокола для обмена данными. Это легкий и простой протокол на основе XML.
REST (передача репрезентативного состояния): стиль архитектуры программного обеспечения, который может снизить сложность разработки и улучшить масштабируемость системы.
Эффективность и простота использования :
SOAP : из-за постоянного расширения содержания собственного протокола в связи с различными потребностями производительность обработки SOAP снизилась. В то же время простота использования и стоимость обучения также возросли.
RESTful : благодаря ресурсо-ориентированному дизайну интерфейса и абстракции операций он упрощает неудачные проекты разработчиков, а также максимально использует исходную концепцию проектирования протокола приложения HTTP.
Безопасность :
RESTful очень подходит для сервисных интерфейсов на основе ресурсов и особенно подходит для сценариев, требующих высокой эффективности, но низких требований к безопасности.
Зрелость SOAP может повысить удобство проектирования интерфейсов, которые необходимо предоставлять для нескольких языков разработки и предъявлять более высокие требования к безопасности.
В итоге:
Безопасность : SOAP будет лучше, чем REST;
Эффективность и простота использования : REST лучше;
Зрелость : вообще говоря, SOAP превосходит REST с точки зрения зрелости.
3. Как разработать RESTful API :
Путь к ресурсу . В архитектуре RESTful каждый URL-адрес представляет ресурс, поэтому URL-адрес не может содержать глаголов, а только существительные. Вообще говоря, существительные в API должны стоять во множественном числе.
Глагол HTTP : Операция ресурсов (CURD), представленная глаголом HTTP (предикатом).
GET: получить ресурсы (один или несколько элементов) с сервера.
POST: Создайте новый ресурс на сервере.
PUT: обновление ресурсов на сервере (клиент предоставляет полностью измененные ресурсы).
УДАЛЕНИЕ: удалить ресурс с сервера.
В качестве примера возьмем зоопарк (включая информацию о различных животных и сотрудниках):
https://api.example.com/v1/zoos //Ресурсы зоопарка https://api.example.com/v1/animals //Ресурсы животных https://api.example.com/v1/employees //Сотрудники ресурс
POST /zoos: Создайте новый зоопарк
GET /zoos/ID: получить информацию об указанном зоопарке.
PUT /zoos/ID: обновить информацию об указанном зоопарке.
DELETE /zoos/D: удалить зоопарк.
Фильтровать информацию :
?limit=10: укажите количество возвращаемых записей.
?offset=10: указывает начальную позицию возвращаемой записи.
?page=2&per_page=100: укажите, какая страница и количество записей на странице.
?sortby=name&order=asc: укажите, по какому атрибуту сортируются возвращаемые результаты, а также порядок сортировки.
?animal_type_id=1: указать условия фильтра.
Код состояния :
200 (ОК) — если существующий ресурс был изменен
201 (создан) — если создается новый ресурс
202 (принят) — запрос на обработку принят, но не завершен (асинхронная обработка)
301 (перемещено навсегда) — URI ресурса обновлен.
303 (см. «Прочее») — «Прочее» (например, балансировка нагрузки)
400 (плохой запрос) — относится к неверному запросу.
404 (не найден)-Ресурс не существует.
406 (недопустимо) — Сервер не поддерживает необходимое представление.
409 (конфликт) — Общий конфликт
412 (не выполнено предварительное условие) — предварительное условие не выполнено (например, конфликт при выполнении обновлений условий).
415 (неподдерживаемый тип носителя) — полученное представление не поддерживается.
500 (внутренняя ошибка сервера) — общий ответ об ошибке
503 (Служба недоступна) — служба в настоящее время не может обработать запрос.
Обработка ошибок :
Возвращаемая информация использует error в качестве имени ключа и информацию об ошибке в качестве значения ключа.
{ ошибка: «Неверный ключ API» }
Результаты возврата :
GET /collection: возвращает список (массив) объектов ресурсов.
GET /collection/resource: возвращает один объект ресурса.
POST/collection: возвращает вновь созданный объект ресурса.
PUT /collection/resource: возвращает полный объект ресурса.
PATCH /collection/resource: возвращает полный объект ресурса.
DELETE /collection/resource: возвращает пустой документ.
4. Процесс тестирования интерфейса в стиле REST :
Давайте представим это непосредственно с картинкой.
5. Написание кода и тестирование Postman :
Инструменты: идея, база данных MySQL, Postman.
Данные таблицы базы данных:
Класс сущности:
Вход в курс повышения квалификации по интерфейсу (vue): введите обучение
@Данные @ApiModel("Класс сущностей пользователя") публичный класс User расширяет Model<User> реализует Serializable { @ApiModelProperty("идентификатор пользователя") @NotNull(message = «Идентификатор пользователя не может быть пустым») частный целочисленный идентификатор; @NotBlank(message = «Имя пользователя не может быть пустым») @ApiModelProperty("имя пользователя") частное имя строки; @Мин(1) @Макс(100) @ApiModelProperty("Возраст пользователя") частный Целочисленный возраст; @NotEmpty(message = «Почтовый ящик не может быть пустым») @ApiModelProperty("Электронная почта пользователя") @Электронная почта личная строка электронной почты; @ApiModelProperty("0: Не удалено 1: Удалено") @TableLogic частное целое число удалено; @NotBlank(message = «Пароль не может быть пустым») @ApiModelProperty("Пароль пользователя") личный строковый пароль; }
Код уровня контроллера (сервисный уровень опущен):
@Api(tags = «Управление пользователями») @RestController @RequestMapping("/MyWebsite/user") публичный класс UserController { @Autowired частный UserServiceImpl userServiceimpl; @ApiOperation(значение = «Новый пользователь») @PostMapping public int InsertUser (Пользователь-пользователь) { System.out.println("Добавление успешно"); вернуть userServiceimpl.insertUser(пользователь); } @ApiOperation(value = «Изменить информацию о пользователе») @PutMapping public void updateUser(@RequestBody @Valid Пользователь) { userServiceimpl.updateUser(пользователь); System.out.println("Модификация прошла успешно"); } @ApiOperation(value = «Удалить пользователя», примечания = «Удалить пользователя по идентификатору») @DeleteMapping("/{id}") public int deleteUser(@ApiParam("идентификатор пользователя") @PathVariable @Valid Integer id) { System.out.println("Удаление успешно"); вернуть userServiceimpl.deleteUser(id); } @ApiOperation(value = «Опросить всех пользователей») @GetMapping публичный список <Пользователь> allUser() { System.out.println("Запрос успешен"); вернуть userServiceimpl.allUser(); } @ApiOperation(value = «идентификатор пользователя запроса») @GetMapping("/{id}") public User selectById(@PathVariable("id") String id) { вернуть userServiceimpl.selectById(id); } }
Используйте Postman для проверки (URL-путь должен соответствовать):
Опрос всех пользователей : http://localhost:8081/MyWebsite/user
Заголовок: Content-Type=application/json
Тело: пустое
Запрос успешен!
Запрос по идентификатору:
Запрос успешен!
Добавить нового пользователя :
Убедитесь, что база данных успешно добавлена!
Изменить информацию о пользователе (изменить имя и возраст с идентификатором 7):
Убедитесь, что модификация базы данных прошла успешно!
Удаление пользователей по идентификатору :
Убедитесь, что база данных успешно удалена! (удален=1)
Возможно, вы удалили весь фрагмент данных напрямую.
При запросе, обновлении или удалении несуществующих данных (или данные недопустимы) выполнение не выполняется. Существуют и другие интерфейсы, например удаление всех интерфейсов, я не проверял их здесь по одному. Если есть какие-либо ошибки, пожалуйста. укажите на них.
Выше приведено подробное описание спецификации интерфейса restful и инструмента отладки почтальона!