Этот пост пытается постараться показать истинную силу использования стандартного способа определить ваши API и как использовать JSON: API как «антибакищеное оружие». Я начну с немного теории, пытаясь изучить, почему это хорошая идея в первую очередь, и тогда я покажу вам наше решение для строительства стандартных JSON: API Servers в очень короткое время.
Теория
Лучше всего начинать с определения того, что JSON: API:
JSON API – это спецификация для того, как клиент должен запрашивать ресурсы для получения или модификации, и как сервер должен отвечать на эти запросы.
JSON API предназначен для минимизации как количества запросов, так и количество данных, передаваемых между клиентами и серверами. Эта эффективность достигается без ущерба для читаемости, гибкости или обнаружения.
Много моего понимания Почему of JSON: API происходит из видео разговора, данного Стивом Клабником в API Days Days Paris. Я встроен видео ниже, потому что я настоятельно рекомендую Вы смотрите все это, чтобы понять, почему это такая важная тема.
Трудно разгонять это видео вниз, потому что есть так много важных вещей, которые Стив говорит на протяжении всего обсуждения, и много ценности в том, что он говорит, так это то, как он ставит эти вещи в контекст.
Когда вы создаете уникальный, индивидуальный, снежин, на заказ, битник моделей связи […] Они не полезны, потому что только несколько человек знают о них
Когда вы хотите общаться с людьми, вы хотите общаться с как можно больше
Мне особенно понравилась роль в видео, где Стив упоминает конкретные задачи, которые сталкиваются с программным консультациями при работе с клиентами, которые имеют на заказ APIS
Если вы работаете на консультирование, и вы наращиваете API для ваших клиентов: иногда [ощущается] очень похоже на суровыйhog день, вы делаете то же самое снова и снова и снова и снова. Поэтому, если вы снова создаете API и снова и снова, вы знаете, что это просто новый свежий шанс поспорить через HTTP семантику со всей командой на пару недель.
Я делаю выбор, который заставляет вас делать больше работы, вы делаете выбор, которые заставляют их сделать больше работы […] Все это происходит, и мы просто законопронит наши часы
Антидот к этому всему процессу для нас, чтобы решить, что мы собираемся использовать одно из стандартных определений API, и для нас, чтобы сосредоточить наше время и энергию на строительные приложения и услуги для наших клиентов.
Когда у вас есть веб-страница, которая описывает семантику HTTP и структуру вашего JSON, вы не можете тратить 2 недели времени разработки, утверждая, что если вы должны использовать камеру или подчеркивание в ваших идентификаторах, или нет Расскажите данные вашей модели, или не следует ли публиковать этот URL или не должен создавать все
Балинт Эрди говорит на Emberconf 2107.
Один из других важных моментов, которые я думаю, не упомянул недостаточно в более широком JSON: API-дискуссии, заключается в том, что вы не должны работать с JSON: API Serialization напрямую.
Дело не в том, что я хочу, чтобы каждый из вас пошел и повторно реализовать спецификацию. Я хочу, чтобы кто-то из вас был жертвенным ягненом, чтобы повторно реализовать спецификацию, а потом все остальные могут просто использовать фрукты их труда.
Когда дело доходит до Эмбежс Мы можем напрямую поговорить с любыми реализацией сервера JSON: API без какой-либо конфигурации на стороне клиента. Одним из проблем состоит в том, что не хватает JSON: API-совместимые серверы, и это то, что мы надеемся, чтобы перейти в следующем разделе.
Практика
Целью этого поста состоит в том, чтобы поднять вас и запустить с полностью функциональным JSON: API Backend менее чем за пять минут (в зависимости от скорости сети для NPM). Для установки будет несколько вещей, но к концу этого у вас будет готовая к развертыванию продуктивной системы. Давайте начнем!
Настройка базы данных
Вам понадобится Монгодб база данных, прежде чем мы начнем. Есть много причин, по которым мы основали эту систему на MongoDB, но я сэкономлю эту дискуссию для другого поста в блоге. Я рекомендовал, чтобы люди ходили в MLAB Чтобы получить свою базу данных, потому что они предоставляют бесплатные онлайн базы данных с песочницей, но теперь сами MongoDB вышли с продуктом под названием Монгодб Атлас что довольно хорошо, и я использую себя.
Вам нужно будет создать базу данных и создать пользователь с разрешениями записи в эту базу данных. Как MLAB, так и Mongodb имеют комплексную документацию о том, как сделать этот процесс.
Установить Nodejs
Эта бэкэнда работает на Nodejs, и мы рекомендуем использовать последнюю версию LTS 10.x при разработке вашего бэкенда. Вы можете скачать узел для вашей системы прямо из Настройка Nodejs Отказ
Установить Йоман и генератор
Йоман это инструмент для легко создания лесов проекта. Чтобы проверить, если у вас уже установлен Йоман, запустите Йо --version.
В командной строке в противном случае установите ее глобально через NPM:
npm install -g yo
Затем нам нужно установить генератор Yeoman, мы будем использовать, чтобы лечить нашу бэкэнду. Это тот же генератор, который мы используем для начать строительство Augmaker Совместимые бэкэндуки, но мы не будем использовать никаких услуг AUTHMAKER для этого быстрого введения, поэтому мы можем удалить/игнорировать все, что является Custommaker Conigine.
npm install -g @authmaker/generator-express
Создайте свое приложение Backend
Следующий шаг – генерировать свою бэкэнду
mkdir my-app-backend cd my-app-backend yo @authmaker/express
Генератор подскажет вам строку подключения к базе данных, большинство из которых будут предоставлены MLAB или MongoDB ATLAS в своем веб-интерфейсе. Вам нужно будет убедиться, что имя пользователя и пароль верны (помните, что имя пользователя и пароль предназначены для созданного вами пользователя базы данных, а не ваш Personal учетные данные MLAB или MongoDB ATLAS). Эта информация будет добавлена в файл без Git, отслеживаемый Настройки/Secure.json
И вы должны убедиться, что вы никогда не совершаете этот файл.
Генератор также создаст два примерных файла для справки, модели/example.js
(модель) и Сервер/маршруты/v1/example.js
(маршрут). Вы можете использовать их для справки и в конечном итоге удалять их.
Определите свою схему
Одна из причин, по которым мы используем MongoDB в этой настройке, заключается в том, что мы хотим иметь возможность определить наши модели Использование Мангуст Отказ Это позволит нам определить, как мы хотим взаимодействовать с нашей базой данных, а также предоставив достаточно информации для нас, чтобы автоматически генерировать систему полного CRUD (CREATE, RETOVE, UPDATE и DELETE) для нашего API.
Допустим, мы работаем над блогом и должны выполнять действия Crud на посты. В модели
Папка, создать post.js
и определить схему для пост модель, как показано ниже. Вы можете использовать сгенерированный файл модели/example.js
Для форматирования ссылки и переименуйте его на post.js
для начала.
// models/post.js const mongoose = require('mongoose'); const schema = new mongoose.Schema({ body: String, created: Date, }); module.exports = schema; module.exports.modelName = 'Post';
Создайте свои маршруты
Пакет, который в конечном итоге будет генерировать JSON: API, совместимые маршруты для вас Express-Autoroute-Json Отказ Он уже был установлен генератором проекта, поэтому вам не нужно его устанавливать его. Вместо того, чтобы определять прямое поведение вашего API, вы взаимодействуете с Express-Autoroute-Json
Использование декларативных блоков конфигурации найти
, Создать
, Обновление
и Удалить
которые определяют конкретную бизнес-логику вашего API.
Включая блок Найти: {}
В вашем файле маршрута Express-Autoroute-Json
Сгенерирует полностью функционирование «Найти все» и «Найти id» конечных точек для доступа к вашей базе данных – нет необходимости конфигурации.
Используя Сервер/маршруты/v1/example.js
Файл в качестве руководства, создайте новый файл для определения маршрутов для пост
Модель, которую мы создали на предыдущем шаге:
// server/routes/v1/post.js const autorouteJson = require('express-autoroute-json'); const { models } = require('../../../models'); module.exports.autoroute = autorouteJson({ model: models.post, // default CRUD find: {}, create: {}, update: {}, delete: {}, });
Приведенный выше пример является наиболее основной реализацией создания маршрута с Express-Autoroute-Json
Отказ После запуска вашего приложения Backend он автоматически генерирует выделенные маршруты для всех действий CRUD на сообщениях. Создание запроса на /посты
или /посты/1
Теперь вернет соответствующие данные из вашей базы данных.
Кроме того, вы можете ограничить определения вашего маршрута до определенных типов запросов. Express-Autoroute-Json
Создает только типы маршрутов, которые вы явно определяете. Чтобы полностью запретить конкретный тип запроса, например, удалить, просто пропустить весь блок Удалить: {}
из вашего файла маршрута.
Заключение
Я очень усердно работал, чтобы отказаться от сущности emberjs ‘” нулевая настройка производительности ” в Express-Autoroute-Json
Так что вы можете начать быть продуктивным очень быстро. Я работал на этой платформе более четырех лет, и в настоящее время он в настоящее время питает некоторых достаточно больших API в производстве прямо сейчас.
Я хотел покинуть этот пост на чем-то, что Стив Клабник сказал в своем разговоре, который резонирует все, что я пытаюсь достичь с Augmaker И во многих других проектах с открытым исходным кодом я работаю:
Стоп строить супер пользовательские API! Ознакомьтесь с одним из пользовательских форматов, которые мы все развивали, выберите One и просто используйте его. Создайте общую инструмент, чтобы перестать тратить время каждому, и давайте построим крутые вещи, чтобы делать аккуратные вещи.
Это повторное сообщение Блог на моем личном сайте
Оригинал: “https://dev.to/real_ate/the-true-power-of-json-api-have-someone-else-do-it-h9h”