Мы отправляем POST-запрос на URL `/users` с данными о новом пользователе.
Сервер обрабатывает запрос и возвращает HTTP-статус 201 Created идентификатор нового пользователя.
В этом примере мы использовали HTTP-методы и статусы для взаимодействия с ресурсами на сервере. Мы получили информацию о пользователе помощью GET-запроса создали нового пользователя POST-запроса.
Вывод
В этой главе мы рассмотрели основные HTTP-методы и статусы, которые используются в REST-api. Мы узнали, как использовать эти методы статусы для взаимодействия с ресурсами на сервере. следующей рассмотрим, проектировать REST-api масштабируемых систем.
2.4. Маршрутизация и обработка запросов
В предыдущих главах мы рассмотрели основные принципы создания масштабируемых систем и особенности REST-api. Теперь давайте поговорим о том, как маршрутизация обработка запросов могут повлиять на производительность масштабируемость нашей системы.
Маршрутизация: основы
Маршрутизация – это процесс определения того, какая часть системы должна обработать входящий запрос. В REST-api маршрутизация обычно осуществляется с помощью URL-адресов и HTTP-методов. Например, если мы имеем URL-адрес `/users/123`, то может определить, что этот запрос должен быть обработан контроллером, отвечающим за работу пользователями.
Типы маршрутизации
Существует два основных типа маршрутизации: статическая и динамическая. Статическая маршрутизация предполагает, что маршруты определяются заранее не меняются в зависимости от контекста. Динамическая маршрутизация, наоборот, позволяет определять на основе контекста запроса.
Пример статической маршрутизации
Допустим, у нас есть REST-api, который предоставляет информацию о пользователях. Мы можем определить статические маршруты для обработки запросов к этому ресурсу:
```python
from flask import Flask, jsonify
app = Flask(__name__)
Статический маршрут для получения информации о пользователе
@app.route('/users/
def get_user(user_id):
user = User.query.get(user_id)
return jsonify({'name': user.name, 'email': user.email})
if __name__ == '__main__':
app.run()
```
В этом примере мы определяем статический маршрут `/users/
Пример динамической маршрутизации
Динамическая маршрутизация может быть полезна, когда нам нужно обрабатывать запросы, которые зависят от контекста. Например, если мы имеем REST-api, который предоставляет информацию о товарах, можем определить динамический маршрут, будет запросы на основе категории товара:
```python
from flask import Flask, jsonify
app = Flask(__name__)
Динамический маршрут для получения информации о товаре
@app.route('/products/
def get_product(category, product_id):
product = Product.query.filter_by(category=category, id=product_id).first()
return jsonify({'name': product.name, 'price': product.price})
if __name__ == '__main__':
app.run()
```
В этом примере мы определяем динамический маршрут `/products/
Обработка запросов
Обработка запросов – это процесс выполнения действий, необходимых для ответа на запрос. В REST-api обработка обычно осуществляется с помощью контроллеров, которые вызывают необходимые методы действий.
Пример обработки запроса
Допустим, у нас есть REST-api, который предоставляет информацию о пользователях. Мы можем определить контроллер, будет обрабатывать запросы к этому ресурсу: