Что такое API?
Простыми словами: это способ взаимодействия одной программы с другой программой посредством ссылки. Прикладным пониманием: это некая ссылка, с помощью которой ваша программа получает нужные вам данные из сервера. API используется во Вконтакте, facebook, Instagram и, наверное, в большинстве программ, используемые вами.
Что такое REST API?
REST – REpresentational State Transfer («передача состояния представления»). Это способ архитектурного проектирования API для приложений.
Разработчики все чаще смотрят в сторону построения приложений с использованием API. У этого подхода есть ряд преимуществ, главным из которых, по моему мнению является мобильность и упрощение создания и поддержки приложения. С АПИ все становится проще: фронт (front-end) работает сугубо с фронтом и не вникает, как происходит обработка и передача данных, бэк же (back-end) не волнует, как и где будут использованы данные, которые они обрабатывают.
В итоге back отдает ссылки на свои сущности, а front использует каждый линк там, где он требуется.
Что такое CRUD?
CRUD – это акроним, который расшифровывается как: Create, Read, Update, Delete. Это 4 базовые функции, в которых зашита логика на back-е, как и что делать с данными: создать запись, отдать на чтение, обновить или удалить информацию. Именно эти 4 функции и используются в RESTful API.
А как же HTTP?
Да, все мы знаем протокол HTTP, который в своем теле может содержать много информации, в том числе и команды на чтение, удаление, изменение, обновление и др.
Полный список команд (методов) протокола HTTP: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH
.
Но зачастую сервер не понимает и не принимает какие-либо запросы, кроме как GET, POST. Вместо ответа может вернуться ошибка, например 501. Т. к. в протоколе HTTP не раскрыта тема того, как должен поступать сервер при той или иной ситуации. У сервера есть обязательство обрабатывать GET запросы, а ваши PUT-ы могут пройти мимо.
Как сделать свою API?
Закончили с вводной частью, теперь рассмотрим инструменты, которые понадобятся для создания своего API на localhost:
- Nodejs
- Npm, пакетный менеджер внутри nodejs
- Пакет json server
После установки nodejs откройте директорию, где будет располагаться ваш созданный API. После этого необходимо открыть командную строку внутри папки и ввести команду:
npm init
После этого либо нажимаем везде на enter, либо заполняем на свое усмотрение:
Теперь у нас есть созданный файл package.json. В той же командной строке пишем следующую инструкцию:
npm install json-server --save-dev
У нас есть почти все, что нам необходимо. Осталось сделать 2 шага:
- Переписать скрипт
package.json
- Создать файл с тестовыми данными в формате
.json
В файле package.json
заменим объект “scripts” на:
"scripts": { "json:server": "json-server --watch db.json --port 3004" },
Это делается для более простого запуска нашего API сервера. "db.json
" – это наша база данных, а --port 3004
– это замена порта по умолчанию. (Если параметр не указан, то порт будет равным 3000).
Создадим в этой же директории наш файл db.json
и заполним его необходимыми данными:
Теперь в консоли нам достаточно набрать:
npm run json:server
Запущенный API сервер:
Теперь перейдем в браузер по ссылке:
http://localhost:3004/users
И увидим наши данные наяву:
По большей части все, теперь Вы можете обращаться из вашего кода к API по указанным ссылкам и в ответ вернуться данные из db.json
.
Какие есть дополнительные возможности?
Если вы из js или иного кода будете отправлять POST, PUT, PATCH
или DELETE
запросы, то все изменения будут сохраняться в вашем db.json
файле.
Фильтрация ответов:
Данный АПИ сервер поддерживает параметры через «?»
и перечисление параметров через «&»
, например:
http://localhost:3004/users?id=2 http://localhost:3004/users?user_status=true&isFriend=false
Для обращения к вложенным элементам можно использовать точку .
:
http://localhost:3004/users?location.city=Москва
Пагинация
По умолчанию количество элементов, возвращаемые API равно 10. Соответственно, нам может понадобиться обращаться к скрытым элементам и менять количество объектов в ответе:
http://localhost:3004/users? _limit=3 http://localhost:3004/users?_page=2&_limit=3
Сортировка
Нам может понадобиться отсортировать результаты. Для этого есть зарезервированные слова _sort
и _order
, где _сорт – это выбор поля, по которому сортируем, _ордер – тип сортировки (восходящая или нисходящая)
http://localhost:3004/users?_sort=location.city&_order=desc
Для нескольких полей ссылка будет следующей:
http://localhost:3004/users?_sort=location.city,firstname&_order=desc,asc
Поиск
Поиск подтекстов в данных:
localhost:3004/users?q=Юрий
Дополнительные функции
Больше функций вы найдете по ссылке в документации
Можно также:
- Делать слайсы (срезы) данных
- Добавлять дочерние ресурсы
- Сделать общий доступ отовсюду
- Операторы
< > ≤ ≥ <исключение значения>, <оператор _like с поддержкой регулярных выражений>
- Генерировать рандомные данные
- Сделать доступ к API по SSL (HTTPS)
- Создавать свои роуты (ссылки, где будет заложена некая логика)
- Добавить выполнение скриптов перед запуском сервера
- Создать аутентификацию к API