Рубрики
Без рубрики

Как построить спокойные API с Falcon

Автор оригинала: FreeCodeCapm Team.

Вступление

Restful API – это главный компонент любого хорошо архивационного стека, а Python случается, имеет некоторые блестящие рамки для быстрого составления API.

Одна из этих рамх называется Сокол – И это здорово! По сути, Microframework, он отправляется с значительным количеством преимуществ:

  1. Это быстро. Действительно быстро. Проверьте ориентиры здесь Отказ
  2. HTTP-ресурсы определяются как классы, с методами класса используются для разных операций отдыха на этих ресурсах. Это помогает поддерживать чистую кодовую базу.
  3. Это вполне расширяется – проверить Этот раздел на их вики, чтобы почувствовать это.
  4. Он основан на 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 для интересных модулей соколов, которые продолжают появляться.