Автор оригинала: FreeCodeCapm Team.
Вступление
Restful API – это главный компонент любого хорошо архивационного стека, а Python случается, имеет некоторые блестящие рамки для быстрого составления API.
Одна из этих рамх называется Сокол – И это здорово! По сути, Microframework, он отправляется с значительным количеством преимуществ:
- Это быстро. Действительно быстро. Проверьте ориентиры здесь Отказ
- HTTP-ресурсы определяются как классы, с методами класса используются для разных операций отдыха на этих ресурсах. Это помогает поддерживать чистую кодовую базу.
- Это вполне расширяется – проверить Этот раздел на их вики, чтобы почувствовать это.
- Он основан на WSGI – стандарт Pythonic для веб-приложений – так работает с Python 2.6, 2.7 и 3.3+. И если вам нужна дополнительная производительность, запустите его, используя Pypy!
Начиная
Во-первых, давайте подготовим нашу среду. Лично, всегда приятно работать в виртуальных средах – вы можете использовать Виртуальский
, VirtualenVwrapper
или Венв
Отказ Далее установите FALCON, используя Пип
: Пип Установите Falcon
Отказ
Мы собираемся разработать небольшой выборки API, который делает для нас очень базовые манипуляции с часовым поясом для нас. Он будет отображать текущее время в UTC, а также соответствующее время эпоха. С этой целью мы будем схватить нефте библиотеку под названием стрелка
: Пип Установите стрелку
Отказ
Вы можете найти законченный образец в https://github.com/rudimk/freecodeCamp-guide-rest-api-falcon Отказ
Ресурсы
Подумайте о ресурсе в качестве объекта, которое ваша API должна манипулировать. В нашем случае лучший ресурс будет Timestamp
Отказ Наша маршрутизация, как правило, будет что-то вроде этого:
GET /timestamp
Здесь Получить
HTTP Verb используется для вызова этой конечной точки, а /timestamp
сам URL. Теперь, когда мы получили это немного с пути, давайте создадим модуль!
$ touch timestamp.py.
Время для импорта Библиотеки Сокола:
import json import falcon import arrow
Примечание. Мы также импортируем JSON
пакет и стрелка
библиотека. Теперь давайте определим класс для нашего ресурса:
class Timestamp(object): def on_get(self, req, resp): payload = {} payload['utc'] = arrow.utcnow().format('YYYY-MM-DD HH:mm:SS') payload['unix'] = arrow.utcnow().timestamp resp.body = json.dumps(payload) resp.status = falcon.HTTP_200
Давайте пройдемся через этот фрагмент. Мы определили Timestamp
класс и определил метод класса под названием on_get
– Эта функция говорит Falcon, что когда Получить
Запрос выдается в конечную точку для этого ресурса, запустите on_get
Функция и предоставить объекты запроса и ответа в качестве параметров.
После этого он гладкий парусный спорт – мы создаем пустой словарь, заполните его текущими временными метками UTC и UNIX, преобразуйте его в JSON и прикрепите его к объекту ответа.
Довольно просто, верно? Но к сожалению, это не все. Теперь нам нужно создать сервер Falcon и подключить класс ресурсов, который мы только что определены на фактическую конечную точку.
$ touch app.py.
Теперь добавьте код ниже:
import falcon from timestamp import Timestamp api = application = falcon.API() timestamp = Timestamp() api.add_route('/timestamp', timestamp)
Здесь мы определили API Falcon и инициализировали экземпляр класса ресурсов, который мы создали ранее. Тогда мы подключили /timestamp
Конечная точка с экземпляром класса – и теперь мы приятно идти! Чтобы проверить эту API Установите боевика
( PIP Установите Gunicorn
), и запустите Приложение Gunicorn
Отказ Используйте почтальон или простой Curl
Чтобы проверить это:
$ curl http://localhost:8000/timestamp {"utc": "2017-10-20 06:03:14", "unix": 1508479437}
И это делает это!
Двигаться дальше
После того, как вы получите повешение FALCON, составляя мощные apies reзов, которые взаимодействуют с базами данных или очередями обмена сообщениями очень просты. Проверьте Falcon Docs , а также PYPI для интересных модулей соколов, которые продолжают появляться.