raml-javascript-generator Быстрый старт

raml-javascript-generator — это инструмент, который создает клиенты JavaScript API из определений RAML API. Он принимает файл RAML в качестве входных данных и выводит пакет NPM.

Начнем с установки raml-javascript-generator:

$ npm install raml-javascript-generator -g

Теперь нам нужен файл RAML, давайте воспользуемся файлом world-music-api из репозитория raml-org/raml-examples. На этом этапе мы можем либо сослаться на локальный RAML-файл, либо указать на удаленный с помощью URL-адреса:

$ raml-javascript-generator https://raw.githubusercontent.com/raml-org/raml-examples/e91308b/others/world-music-api/api.raml -o world-music-api

Заглянем внутрь поближе:

$ cd world-music-api/
$ ls -1 ./
INSTALL.md
README.md
index.js
package.json

Результатом является устанавливаемый пакет NPM со всеми его зависимостями, определенными в package.json.

$ cat package.json | jq .dependencies
{
  "client-oauth2": "^2.1.0",
  "xtend": "^4.0.1",
  "request-promise": "^4.2.2",
  "request": "^2.34",
  "setprototypeof": "^1.0.1",
  "query-string": "^5.0.0"
}

Он также генерирует README с основными инструкциями по использованию. Давайте взглянем на некоторые из этих инструкций:

$ grep -o '#### `.*' README.md 
#### `api.get([query, [options]])`
#### `api.post([body, [options]])`
#### `entry.post([body, [options]])`
#### `entry.get([query, [options]])`
#### `songs.get([query, [options]])`
#### `songs.post([body, [options]])`
#### `songs.songId({ songId }).get([query, [options]])`

Здорово! Теперь мы можем установить сгенерированную библиотеку:

$ npm install

и использовать его в нашем коде JavaScript.

Но прежде чем играть дальше, нам нужно запустить серверную часть API. Для этого мы будем использовать osprey-mock-service (не забудьте проверить этот osprey-mock-service пост):

$ osprey-mock-service -f https://raw.githubusercontent.com/raml-org/raml-examples/e91308b/others/world-music-api/api.raml -p 1234
Mock service running at http://localhost:1234

Теперь, когда у нас запущен бэкэнд API, мы можем делать запросы, используя нашу библиотеку world-music-api:

# test.js
const WorldMusicAPI = require('.')
const client = new WorldMusicAPI({baseUri: 'http://localhost:1234/v1'})

client.songs.songId({'songId': 1}).get().then((response) => {
  console.log(response.body)
})

Затем запуск этого фрагмента выведет:

node test.js 
{ title: 'My Song', length: 12 }