Что такое API?
Поскольку мы говорим про REST API, то наше определение API не будет сильно выходить за тематику сетей. Подробнее про API можно прочитать тут.
API означает Application Programming Interface. API задает связь между программами для возможности передачи данных.
То, что программа имеет API, подразумевает, что она передает часть своих данных для использования клиентом. Клиентом может быть фронтенд часть той же самой программы или другая внешняя программа.
Для получения этих данных необходимо отправить структурированный запрос на API. Если запрос удовлетворят желаемым требованиям, то ответ, содержащий данные, будет отправлен туда откуда был сделан запрос. Обычно ответ представлен в формате JSON или XML.
В некоторых случаях, для получения доступа к внешнему API, от вас может потребоваться авторизация.
Каждый API имеет документацию, в которой говорится какие данные доступны и как структурировать свой запрос для получения правильного ответа.
Примеры API
Рассмотрим в качестве примера реальную ситуацию.
Представьте посещение нового ресторана. Вы пришли, чтобы заказать еду, а поскольку вы здесь впервые, то точно не знаете какие блюда они подают.
Официант дает вам меню, в котором можно выбрать, чтобы вы хотели съесть. После того, как выбор сделан, официант отправляется на кухню и приносит вам еду.
В данном случае официант - это API, который обеспечивает вашу взаимосвязь с кухней. Документация API - это меню. Запрос выполняется в тот момент, когда вы отмечаете желаемые блюда, а ответ - это блюда, которые вам принесли.
Что такое REST?
REST означает REpresentational State Transfer (передача состояния представления). Это стандарт, который определяет форму и работу процессов, позволяющих нам взаимодействовать с данными на вебсерверах.
Приведенное выше определение может выглядеть не так сложно или «профессионально», как то, что вы могли встретить в интернете, но главное, чтобы вы поняли основную цель REST API.
API, который удовлетворяет некоторым или всем шести руководящим ограничениям REST считается RESTful.
Мы можем взаимодействовать с серверами при помощи протокола HTTP. Благодаря этим протоколам мы можем Create (создавать), Read (читать), Update (обновлять) and Delete (удалять) данные – также известные как CRUD операции.
Но каким образом мы можем выполнять CRUD операции и взаимодействовать с данными на сервере?
Мы делаем это, посылая HTTP запросы, и это тот самый момент, когда REST начинает действовать. REST упрощает процесс взаимодействия с сервером, предоставляя различные HTTP методы/операции/команды, с помощью которых можно посылать запросы на сервер.
Как взаимодействовать с сервером, используя REST API?
Как мы уже обсуждали, REST API облегчает процесс взаимодействия с сервером, предоставляя нам различные методы HTTP запросов. Наиболее распространенные методы:
- GET: Метод get используется для Чтения данных с сервера.
- POST: Метод post используется для Создания данных.
- PATCH/PUT: Метод patch используется для Обновления данных.
- DELETE: Метод delete используется для Удаления данных.
Эти методы предоставлены нам REST, что упрощает выполнение CRUD операций. Таким образом:
- Создать => POST
- Прочитать => GET
- Обновить => PATCH/PUT
- Удалить => DELETE
Если мы хотим сделать запрос на сервер, например, для получения данных, то мы отправляем запрос GET на узел/источник данных на сервере. Узел данных аналогичен URL.
Если запрос составлен корректно, то сервер отправит нам в ответ запрашиваемые данные. Также он отправит код состояния, где 200
- это успешное выполнение, а 400
- это ошибка пользователя.
Пример запроса на JSONPlaceholder API, используя JavaScript:
fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(json => console.log(json))
При выполнении запроса с использованием fetch API по умолчанию используется метод GET, поэтому мы можем не указывать его явно. Но мы должны будем это сделать при использовании других методов.
В приведенном выше примере, узел данных - это https://jsonplaceholder.typicode.com
, а запрашиваемые нами данные - это один элемент todo. Данные будет получены в JSON формате.
Если бы мы использовали запрос POST, тогда бы мы использовали метод POST, а в теле запроса находились бы данные, которые мы создали для отправки на сервер.
Для удаления нам потребуется использовать соответствующий запрос, содержащий id элемента todo, который мы хотим удалить. Например:
fetch('https://jsonplaceholder.typicode.com/posts/3', { method: 'DELETE', });
Для обновления данных нужно, чтобы запрос содержал id и данные для обновления. Как в этом примере:
fetch('https://jsonplaceholder.typicode.com/posts/5', { method: 'PATCH', body: JSON.stringify({ title: 'new todo', }), headers: { 'Content-type': 'application/json; charset=UTF-8', }, }) .then((response) => response.json()) .then((json) => console.log(json));
Заключение
В этом руководстве вы узнали, что такое REST и как он помогает нам эффективно взаимодействовать с сервером.
Мы дали определение API и рассмотрели пример, который помог объяснить его смысл. Мы также узнали некоторые методы REST для создания, чтения, обновления и удаления данных, хранящихся на сервере.