Что такое дизайн RESTful API?

Java

С появлением мобильного Интернета дизайн API в стиле RESTful также стал популярным, но мы так много говорили о дизайне RESTful, что же это такое? В этой статье вы узнаете, что это такое на самом деле.

RESTful концепция

Прежде всего, нам нужно прояснить, что RESTful — это концепция, спецификация дизайна, а не протокол.

REST, полное название Representational State Transfer, прямой перевод: преобразование состояния уровня представления. Причина, по которой этот перевод неясен, заключается в том, что в нем отсутствует предмет, который, если быть точным, должен быть "Передача репрезентативного состояния ресурсов".

Говоря простым языком, это означает, что «ресурсы претерпевают трансформацию состояния в определенной форме выражения в сети».

Концепция REST была представлена ​​в его докторской диссертации 2000 года Роем Томасом Филдингом, главным архитектором протокола HTTP (версии 1.0 и 1.1).

Поняв основные понятия RESTful, давайте взглянем на объяснения связанных с ним понятий.

ресурс

«Ресурс» — одно из основных понятий RESTful. В концепции RESTful любая информация в Интернете может быть определена как ресурс, такой как текст, изображения, аудио, видео и т. д. И этим ресурсам может соответствовать определенный URI (Uniform Resource Locator), а URI — это адрес или уникальный идентификатор каждого ресурса.

уровень представления

Для вышеуказанных «ресурсов» нам необходимо сделать соответствующие презентации, и мы можем использовать различные формы представления, и эти формы представления называются «уровнями представления».

Взяв в качестве примера текст, мы можем отображать его в формате JSON, формате XML, формате HTML, даже в двоичном формате и т. д. Это то, что делает уровень представления.

переход состояния

Ресурсы обычно размещаются на стороне сервера, а такие операции, как добавление, удаление, изменение и проверка ресурсов сервера на стороне клиента, предполагают преобразование состояния ресурса. Этот процесс называется «переходом состояния».

Возьмем в качестве примера протокол HTTP (RESTful не только применим к протоколу HTTP, но и часто использует протокол HTTP в качестве фольги), клиент может изменять ресурсы на стороне сервера посредством некоторых операций.

И весь этот процесс — «трансформация состояния слоя представления».

В HTTP предусмотрено четыре общих метода работы: GET, POST, PUT, DELETE.

Эти четыре режима работы соответствуют четырем основным операциям: GET используется для получения ресурсов, POST используется для создания новых ресурсов (а также может использоваться для обновления ресурсов), PUT используется для обновления ресурсов и DELETE используется для удаления ресурсов.

Зачем использовать стиль RESTful?

Это связано с тем, что дизайн RESTful имеет следующие характеристики: четкая структура, соответствие стандартам, простота понимания и простота расширения.

Только представьте, если принимается традиционный режим JSP, содержимое страницы и код смешиваются вместе, и в это время функции проекта необходимо добавить другие клиенты, такие как мобильный терминал и апплет WeChat.Вам нужно переопределить интерфейс?

Определение RESTful не только ясно по структуре, но, что более важно, его легко расширить и оно имеет более широкое применение.

Пример стиля RESTful

Взяв в качестве примера добавление, удаление, изменение и запрос пользователя, мы можем разработать следующую форму интерфейса: каждый столбец соответствует друг другу (тип запроса: адрес запроса: описание функции)

  • get : /user/list : получить всю информацию о пользователе
  • post: /user: создать информацию о пользователе
  • put: /user: обновить информацию о пользователе
  • get: /user/1: получить информацию о пользователе, чей идентификатор ресурса (id) равен 1.
  • удалить: /user/1: удалить информацию о пользователе, чей идентификатор ресурса (id) равен 1

Он кажется лаконичным, ясным и удобным?

Если совместить со SpringBoot, будет удобнее. Ниже показана часть кода, реализующего уровень контроллера через SpringBoot.

@RestController
@RequestMapping("/user")
public class RestfulController {

    @Resource
    private UserService userService;

    /**
     * 创建用户操作
     */
    @PostMapping
    public User addUser(User user) {
        return userService.addUser(user);
    }

    /**
     * 获取所需用户操作
     */
    @GetMapping("/list")
    public List<User> listUser() {
        return userService.findAll();
    }

    /**
     * 更新用户
     */
    @PutMapping
    public User update(User user) {
        return userService.update(user);
    }

    /**
     * 修改用户名
     */
    @PatchMapping
    public User updateUsername(User user) {
        return userService.updateUsername(user);
    }

    /**
     * 获取用户
     */
    @GetMapping("{id}")
    public User get(@PathVariable("id") Long id) {
        return userService.findById(id);
    }

    /**
     * 删除用户
     */
    @DeleteMapping("{id}")
    public void delete(@PathVariable("id") Long id) {
        userService.delete(id);
    }
}

Видеоруководство по Boutique SpringBoot 2.x

«Семейный блок видеоуроков Spring Boot 2.x»,Видеоруководство по Boutique Spring Boot 2.x, чтобы создать наиболее полный набор видеоуроков по Spring Boot 2.x.


Программа Новые Горизонты: Захватывающие и растущие нельзя пропустить

程序新视界-微信公众号