Когда речь заходит об API, большинство людей представляют REST API (т. е. веб-API), но это не единственный вариант. В этой статье я расскажу, что такое API. Также мы с вами создадим REST API при помощи FastAPI (Python).
Что такое API?
Если говорить попроще, API — просто конструкт, который абстрагирует части сложного кода (JavaScript DOM API) или обеспечивает связь между кодовыми базами (между фронтендом и бэкендом, например). API также могут быть очень полезны для «соединения» языков программирования и передачи данных из кода на одном языке в код на другом.
Отличная статья на эту тему есть у Mozilla. Короткая выдержка из этой статьи:
«Прикладные программные интерфейсы (Application Programming Interface, API) — это конструкты, написанные на языках программирования и позволяющие разработчикам более легко создавать сложный функционал. Они абстрагируют от вас сложный код, давая возможность использовать вместо него более простой синтаксис».
И прекрасная аналогия (тоже от Mozilla). Представьте себе электрические приборы в своем доме. Если вы хотите использовать какой-то прибор, вы вставляете его вилку в розетку — и он работает. Вы не пытаетесь каждый раз вручную скручивать провода — это неэффективно, а если вы не электрик, то еще и небезопасно.
Виды API
API бывают разных видов, и об этом стоит знать и помнить. Есть програмноцентричные API, как в Java (они позволяют объектам общаться друг с другом) и веб-центричные API, такие как REST API (Representational State Transfer), GraphQL API и многие другие.
Как создать API самостоятельно
Популярные языки для написания API — JavaScript, Python, Go, Rust (пишут и на других, но на этих чаще всего).
Давайте напишем API на Python: с FastAPI это очень просто!
Вообще есть несколько вариантов, как создать API на Python (Flask, Quart, FastAPI). Я выбрал FastAPI, потому что он быстрый и создан специально для написания API.
Для начала установим все необходимое.
pip install fastapi uvicorn # uvicorn - ASGI-сервер, опционален для этого руководства
Писать API на Python или JavaScript очень просто, потому что это всего лишь функция с декоратором.
from fastapi import FastAPI app = FastAPI() @app.get("/") def hello(): return {"Hello": "World"}
И это все!
Сперва мы импортировали fastapi
, затем объявили app
. Вы можете передать в app
многие настройки, и fastapi автоматически сгенерирует Swagger UI документацию и страницу Redoc (на картинке внизу — Swagger-документация, доступная на конечной точке (англ. endpoint) /docs
.
У вас могут быть аргументы, например:
@app.get("/items") def read_item(q: Optional[str] = None): return {"q": q}
Это вернет bread для q по адресу http://127.0.0.1:8000/items?q=bread.
У вас также могут быть динамичные конечные точки:
@app.get("/user/{user_name}") def read_item(user_name:str): return {"username": user_name}
Если вы теперь перейдете по адресу http://127.0.0.1:8000/user/dhravya, получите «username: dhravya».
А как запустить сервер?
Используйте команду:
uvicorn main:app --reload
Она покажет следующее:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [28720] INFO: Started server process [28722] INFO: Waiting for application startup. INFO: Application startup complete.
Иии… все! API — это просто. Теперь вы можете подключить ваш фронтенд на React к бэкенду на Python.
От редакции Techrocks. Если эта статья не дала полного понимания, что такое API, попробуйте почитать также
- Что такое API? Простое объяснение для начинающих
- Простое объяснение Web API на примере продажи фермерских продуктов
- Что такое API: подробно и простыми словами
Для развертывания я использую следующую команду и реверс-прокси с Apache:
pkill gunicorn && gunicorn app:app -w 1 -k uvicorn.workers.UvicornWorker -b "127.0.0.1:8000" --daemon
Но это, конечно, самые основы. Почитайте документацию FastAPI и попробуйте поиграться с ним.
В вебе полно API. Их использование сэкономит вам время! Зайдите на https://rapidapi.com и посмотрите, какие варианты предлагаются.
От редакции Techrocks. Также рекомендуем статью «API для фронтенд-разработки».
Перевод статьи «APIs: Explained to a 5 year old».
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]