4.9 KiB
title, date, draft, tags
| title | date | draft | tags | ||
|---|---|---|---|---|---|
| 📥 RESTful и HTTP методы | 2023-06-21T23:11:07+03:00 | false |
|
Что такое RESTful веб-сервис?
Архитектура REST разработана чтобы соответствовать протоколу HTTP используемому в сети Интернет.
Центральное место в концепции RESTful веб-сервисов это понятие ресурсов. Ресурсы представлены URI. Клиенты отправляют запросы к этим URI используя методы представленные протоколом HTTP, и, возможно, изменяют состояние этих ресурсов.
Методы HTTP спроектированы для воздействия на ресурс стандартным способом:
{{< table "table table-sm table-striped table-hover" >}}
| Метод HTTP | Действие | Пример |
|---|---|---|
| GET | Получить информацию о ресурсе | example.com/api/orders (получить список заказов) |
| GET | Получить информацию о ресурсе | example.com/api/orders/123 (получить заказ #123) |
| POST | Создать новый ресурс | example.com/api/orders (создать новый заказ из данных переданных с запросом) |
| PUT | Обновить ресурс | example.com/api/orders/123 (обновить заказ #123 данными переданными с запросом) |
| DELETE | Удалить ресурс | example.com/api/orders/123 (удалить заказ #123) |
| {{</ table >}} |
Дизайн REST не дает рекомендаций каким конкретно должен быть формат данных передаваемых с запросами. Данные переданные в теле запроса могут быть JSON blob, или с помощью аргументов в URL.
Пример простого веб-сервиса
При проектировании веб-сервиса или API нужно определить ресурсы, которые будут доступны и запросы, с помощью которых эти данные будут доступны, согласно правил REST.
Допустим мы хотим написать приложение To Do List и мы должны спроектировать веб-сервис для него. Первое что мы должны сделать, это придумать кореневой URL для доступа к этому сервису. Например мы могли бы придумать в качестве корневого URL что-то типа:
http://[hostname]/todo/api/v1.0/
Здесь я решил включить в URL имя приложения и версию API. Добавление имени приложения в URL это хороший способ разделить между собой сервисы запущенные на одном сервере. Добавление версии API в URL может помочь, если вы захотите сделать обновление в будущем и внедрить в новой версии несовместимые функции и не хотите ломать работающие приложения которые работают на старом API.
Следующим шагом мы должны выбрать ресурсы, которые будут доступны через наш сервис. У нас очень простое приложение, у нас есть только задачи, поэтому нашими ресурсами могут быть только задачи из нашего ToDo листа.
Для доступа к ресурсам будем использовать следующие методы HTTP:
{{< table "table table-sm table-striped table-hover" >}}
| Метод HTTP | URI | Действие |
|---|---|---|
| GET | http://[hostname]/todo/api/v1.0/tasks |
Получить список задач |
| GET | http://[hostname]/todo/api/v1.0/tasks/[task_id] |
Получить задачу |
| POST | http://[hostname]/todo/api/v1.0/tasks |
Создать новую задачу |
| PUT | http://[hostname]/todo/api/v1.0/tasks/[task_id] |
Обновить существующую задачу |
| DELETE | http://[hostname]/todo/api/v1.0/tasks/[task_id] |
Удалить задачу |
| {{</ table >}} |