rest methods

This commit is contained in:
Alexander Popov 2023-06-21 23:11:29 +03:00
parent 6ef2cf9c04
commit dd92403f93
Signed by: iiiypuk
GPG Key ID: E47FE0AB36CD5ED6

View File

@ -0,0 +1,73 @@
---
title: "📥 RESTful и HTTP методы"
date: 2023-06-21T23:11:07+03:00
draft: false
tags: [http, tips]
---
## Что такое RESTful веб-сервис?
Архитектура REST разработана чтобы соответствовать
протоколу HTTP используемому в сети Интернет.
Центральное место в концепции RESTful веб-сервисов это понятие ресурсов.
Ресурсы представлены URI.
Клиенты отправляют запросы к этим URI используя методы представленные протоколом HTTP, и,
возможно, изменяют состояние этих ресурсов.
Методы HTTP спроектированы для воздействия на ресурс стандартным способом:
| Метод 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) |
Дизайн REST не дает рекомендаций каким конкретно должен быть
формат данных передаваемых с запросами.
Данные переданные в теле запроса могут быть JSON blob,
или с помощью аргументов в URL.
## Пример простого веб-сервиса
При проектировании веб-сервиса или API нужно определить ресурсы,
которые будут доступны и запросы, с помощью которых эти данные будут доступны,
согласно правил REST.
Допустим мы хотим написать приложение To Do List
и мы должны спроектировать веб-сервис для него.
Первое что мы должны сделать, это придумать кореневой URL для доступа к этому сервису.
Например мы могли бы придумать в качестве корневого URL что-то типа:
```text
http://[hostname]/todo/api/v1.0/
```
Здесь я решил включить в URL имя приложения и версию API.
Добавление имени приложения в URL это хороший способ
разделить между собой сервисы запущенные на одном сервере.
Добавление версии API в URL может помочь,
если вы захотите сделать обновление в будущем
и внедрить в новой версии несовместимые функции
и не хотите ломать работающие приложения которые работают на старом API.
Следующим шагом мы должны выбрать ресурсы,
которые будут доступны через наш сервис.
У нас очень простое приложение, у нас есть только задачи,
поэтому нашими ресурсами могут быть только задачи из нашего ToDo листа.
Для доступа к ресурсам будем использовать следующие методы HTTP:
| Метод 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] | Удалить задачу |
## Используемые ресурсы
- [Проектирование RESTful API с помощью Python и Flask](https://habr.com/ru/articles/246699/)