Ответ
REST (Representational State Transfer) — это архитектурный стиль для создания веб-сервисов, который использует стандартные HTTP-методы для взаимодействия между клиентом и сервером. Данные обычно передаются в формате JSON.
Основные HTTP-методы в REST:
GET: Получение данных (ресурса).POST: Создание нового ресурса.PUT/PATCH: Обновление существующего ресурса.DELETE: Удаление ресурса.
В Python для работы с REST API чаще всего используется библиотека requests для синхронных запросов или aiohttp для асинхронных.
Пример использования requests:
import requests
import json
# Базовый URL API
BASE_URL = 'https://jsonplaceholder.typicode.com'
# 1. GET-запрос: получение списка постов
try:
response = requests.get(f'{BASE_URL}/posts/1')
response.raise_for_status() # Проверка на HTTP-ошибки (4xx или 5xx)
post_data = response.json()
print("GET-запрос успешен:")
print(json.dumps(post_data, indent=2))
except requests.exceptions.RequestException as e:
print(f"Ошибка GET-запроса: {e}")
# 2. POST-запрос: создание нового поста
new_post = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
headers = {'Content-type': 'application/json; charset=UTF-8'}
try:
response = requests.post(f'{BASE_URL}/posts', json=new_post, headers=headers)
response.raise_for_status()
created_post = response.json()
print("nPOST-запрос успешен:")
print(f"Создан пост с ID: {created_post.get('id')}")
except requests.exceptions.RequestException as e:
print(f"Ошибка POST-запроса: {e}")
Ключевые аспекты при работе с REST API:
- Обработка статус-кодов: Анализ ответа сервера (
200 OK,201 Created,404 Not Found,500 Internal Server Error). - Аутентификация: Передача токенов (JWT, OAuth) или API-ключей, обычно в заголовках (
Authorizationheader). - Обработка ошибок: Реализация логики для случаев таймаутов, проблем с сетью и некорректных ответов API.
Ответ 18+ 🔞
А, REST, блядь! Ну это ж классика, ёпта! Представь себе, что у тебя есть шкаф, а в нём — куча ящиков с данными. REST — это такой свод правил, как ты можешь эти ящики открывать, смотреть, что там, класть новое барахло, менять старое или вообще выкидывать нахуй. И всё это через обычный HTTP, который и так везде торчит.
Основные команды, которыми ты эти ящики долбишь:
GET: Посмотреть, что внутри. Сунул руку, пошарил, достал инфу.POST: Засунуть в ящик какую-то новую хуйню.PUT/PATCH: Достать старую хуйню из ящика, подпилить её напильником и засунуть обратно.DELETE: Взять ящик и выкинуть его в мусоропровод. Пиздец ящику.
В Питоне, если ты не хочешь всё это руками через сокеты городить, есть библиотеки. Для простых, тупых запросов — requests. Если хочешь, чтобы всё летало как угорелое и не ждало друг друга — aiohttp, но там уже мозги надо включать.
Вот смотри, как это выглядит на практике с requests:
import requests
import json
# Адрес нашей конторы, где ящики лежат
BASE_URL = 'https://jsonplaceholder.typicode.com'
# 1. Команда "Посмотреть" (GET): Глянем, что в ящике под номером 1
try:
response = requests.get(f'{BASE_URL}/posts/1')
response.raise_for_status() # Если сервер ответил "пошёл нахуй" (ошибка 4xx/5xx), упадём тут
post_data = response.json()
print("GET-запрос успешен:")
print(json.dumps(post_data, indent=2))
except requests.exceptions.RequestException as e:
print(f"Ошибка GET-запроса: {e}") # А вот тут мы эту ошибку и поймаем, если что
# 2. Команда "Засунуть" (POST): Создадим новый ящик с какой-то хренью
new_post = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
headers = {'Content-type': 'application/json; charset=UTF-8'} # Говорим серверу: "Держи, это JSON, не пугайся"
try:
response = requests.post(f'{BASE_URL}/posts', json=new_post, headers=headers)
response.raise_for_status()
created_post = response.json()
print("nPOST-запрос успешен:")
print(f"Создан пост с ID: {created_post.get('id')}") # Сервер нам выдает номер нового ящика
except requests.exceptions.RequestException as e:
print(f"Ошибка POST-запроса: {e}")
На что смотреть, чтобы не обосраться:
- Статус-коды: Это как сервер тебе подмигивает.
200— «всё чики-пуки, держи».404— «ящик, блядь, потерял, ищи в другом месте».500— «у меня тут внутри всё ебнулось, приходи позже». - Аутентификация: Часто чтобы ящики трогать, нужно показать пропуск. Токен, ключ. Кидаешь его обычно в шапку запроса (
Authorization), типа «свой, ребята, пустите». - Обработка ошибок: Сеть может лечь, сервер — зависнуть, ответ может быть кривой, как рога барана. Надо быть готовым ко всему этому пиздецу и не падать в обморок, а обработать и что-то сделать.