Что такое отсутствие состояния в REST
Python
Middle
Без компании
Что такое отсутствие состояния в REST
Ответы
REST (Representational State Transfer) требует, чтобы сервер не хранил состояние клиента между запросами. Каждый запрос должен содержать всю необходимую информацию для его обработки. Это повышает масштабируемость и надежность системы.
**Пример без состояния:**
```
# Клиент отправляет токен в каждом запросе
@app.route('/data')
def get_data():
token = request.headers.get('Authorization')
if not validate_token(token):
return 'Unauthorized', 401
return {'data': 'some_value'}
```
**Пример с состоянием (нарушение REST):**
```
# Сервер хранит состояние клиента
sessions = {}
@app.route('/login')
def login():
sessions['user'] = 'authenticated'
return 'Logged in'
@app.route('/data')
def get_data():
if sessions.get('user') != 'authenticated':
return 'Unauthorized', 401
return {'data': 'some_value'}
```
Отсутствие состояния позволяет:
- Легко масштабировать сервер (любой инстанс может обработать запрос)
- Упрощает восстановление после сбоев
- Уменьшает нагрузку на сервер (не нужно хранить сессии)