С появлением мобильного Интернета дизайн 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.