LoopBack - это высоко расширяемая платформа Node.js с открытым исходным кодом на основе Express, которая позволяет быстро создавать API и микросервисы, состоящие из серверных систем, таких как базы данных и службы SOAP или REST.
В этом посте мы собираемся создать простой API, взаимодействующий с API обменных курсов с помощью прокси-сервера, немного исследуя клиентские инструменты LoopBack 4.
Создание проекта
Во-первых, давайте создадим наше приложение, здесь вы получите доступ к объясненным пошаговым инструкциям:
Установите loopback с помощью npm:
$ npm install -g strongloop
Поместите параметр -g
для глобальной установки, loopback будет добавлен в ваш PATH, чтобы вы могли работать везде.
Одна из самых замечательных вещей в LoopBack - это мощный клиент. Используя свой терминал, вы можете создавать контроллеры, модели, репозитории и многое другое.
Давайте создадим наше приложение:
Откройте свой терминал, перейдите в каталог проекта и просто введите:
$ lb4 app
А теперь настройте свой проект, например:
? Project name: currency-converter
? Project description: easy currency conversion
? Project root directory: currency-converter
? Application class name: CurrencyConverterApplication
Очень просто! Ваше приложение создано.
Создание других артефактов
После создания нашего приложения пришло время создать другие классы для нашего проекта.
Источник данных:
LoopBack предоставляет множество коннекторов, которые можно легко подключить к базам данных SQL / NoSQL. Для этого API мы собираемся использовать REST Service Connector.
В вашем терминале введите:
$ lb4 datasource
? Datasource name: exchangerate
? Select the connector for exchangerate: PostgreSQL (supported by StrongLoop)
Oracle (supported by StrongLoop)Microsoft SQL (supported by StrongLoop)
❯ REST services (supported by StrongLoop) -> Select this oneSOAP webservices (supported by StrongLoop)
Couchbase (provided by community) Neo4j (provided by community) (Move up and down to reveal more choices)
Нажмите Enter для любого вопроса, не беспокойтесь.
Будет создан файл с именем src/datasources/exchangerate.datasource.json
, перейдите туда и измените все содержимое для этого:
{ "name": "exchangerate", "connector": "rest", "options": { "headers": { "accept": "application/json", "content-type": "application/json" } }, "operations": [{ "template": { "method": "GET", "url": "https://api.exchangeratesapi.io/latest?base={base}" }, "functions": { "getdata": ["base"] } }] }
Как видите, мы создали функцию с именемgetdata
, которая вызывает API https://api.exchangeratesapi.io/latest, передавая параметр с именем base
.
Вы можете использовать другие методы или даже создать несколько datasources
.
Служба:
Теперь нам нужно создать нашу службу, которая будет отвечать за вызов API, настроенного выше.
В вашем терминале введите:
$ lb4 service
С последующим:
? Service type: (Use arrow keys) ❯ Remote service proxy backed by a data source -> Select this one Local service class bound to application context Local service provider bound to application context ? Service name: Exchangerate -> The name
Контроллер
LoopBack дает вам мощный способ подключить ваш REST API к контроллеру, и самое лучшее: код не требуется. Это автоматически!
В вашем терминале введите:
$ lb4 controller
С последующим:
? Controller class name: Exchangerate -> Controller's name Controller Exchangerate will be created in src/controllers/exchangerate.controller.ts ? What kind of controller would you like to generate? (Use arrow keys) ❯ Empty Controller -> Select this REST Controller with CRUD functions
Будет создан контроллер. Давайте создадим наш первый метод GET
для возврата всех обменных курсов:
import {inject} from '@loopback/context'; import {ExchangeRateService} from '../services/exchange-rate.service'; import {get, param} from '@loopback/rest'; export class ExchangeRateController { constructor( @inject('services.ExchangeRate') private exchangeRateService: ExchangeRateService, ) {} @get('/exchange-rate') getall() { return this.exchangeRateService.getdata(); } }
Так просто! Если вы видите приведенный выше код, мы создали конечную точку с именем /exchange-rate
, которая будет возвращать все данные из service
, подключенного к datasource
, вызывая API ExchangeRate.
Создадим еще один!
@get('/exchange-rate/{base}') get(@param.path.string('base') base: string) { return this.exchangeRateService.getdata(base); }
Мы создали параметр base
, отправив его нашему сервису. Все это благодаря loopback / rest, который дает вам множество инструментов для ускорения разработки вашего API.
Запуск вашего проекта
Пришло время увидеть, как творится волшебство!
В вашем терминале введите:
$ npm start
Server is running at http://[::1]:3000 Try http://[::1]:3000/ping
Одна из вещей, которые мне больше всего нравятся в Loopback, - это проводник API. Если вы наберете в своем браузере http://127.0.0.1:3000/explorer/, вы увидите пользовательский интерфейс Swagger, уже подключенный к вашим методам в вашем контроллере.
Пытаться
Вы можете увидеть полный код здесь: https://github.com/irineul/lb4-currency