Page Contents

Вы можете легко добавить версионность вашему REST API, используя главный package.json файл.

Добавьте файл с именем  config.local.js в каталоге приложения /server  с следующим кодом:

/server/config.local.js

var p = require('../package.json');
var version = p.version.split('.').shift();
module.exports = {
  restApiRoot: '/api' + (version > 0 ? '/v' + version : ''),
  host: process.env.HOST || 'localhost',
  port: process.env.PORT || 3000
};

Это позволяет взять номер версии с свойства version в package.json и встраивает его в корень REST API. Если версия вашего приложения 0, то корень api  будет стандартным /api.

Для пример если версия в package.json  2.0.1, то при построени

GET http://localhost:3000/api/Users

на:

GET http://localhost:3000/api/v2/Users

ed.git
$ cd loopback-getting-started
$ git checkout step2
$ npm install

Добавление удаленного метода (remote method)

Выполните следующие действия:

  1. Откройте каталог приложения /common/models.  Вы увидите что там лежит coffee-shop.js файл.  

</div>

  1. Откройте coffee-shop.js в вашем любимом редакторе.  По умолчанию он содержит пустую функцию: 

    module.exports = function(CoffeeShop) {};
    
  2. Добавьте следующий код в эту функцию для расширения поведения модели  с удаленным методом (remote method), как в данном примере:

    module.exports = function(CoffeeShop) {
      CoffeeShop.status = function(cb) {
        var currentDate = new Date();
        var currentHour = currentDate.getHours();
        var OPEN_HOUR = 6;
        var CLOSE_HOUR = 20;
        console.log('Current hour is ' + currentHour);
        var response;
        if (currentHour > OPEN_HOUR && currentHour < CLOSE_HOUR) {
          response = 'We are open for business.';
        } else {
          response = 'Sorry, we are closed. Open daily from 6am to 8pm.';
        }
        cb(null, response);
      };
      CoffeeShop.remoteMethod(
        'status', {
          http: {
            path: '/status',
            verb: 'get'
          },
          returns: {
            arg: 'status',
            type: 'string'
          }
        }
      );
    };
    

    Тут приведен просто удаленный метод “status” который не принимает никаких аргументов, и сверяет время и возвращает в JSON  сообщение, которое говорит “Open for business” или “Sorry we are closed” в зависимости от текущего времени.

    Конечно, на практике вы можете сделать гораздо более интересные и сложные вещи используя удаленные методы (remote method), таких как манипуляции  c введенными данными, перед сохранением их в базу данных. Вы можите изменить путь где вы вызываете удаленный метод (remote method), и определять сложные аргументы и возвращаемые значения.  См. Удаленные методы (remote methods) для получения более подробной информации.

  3. Сохраните файл.

Попробуйте удаленный метод (remote method)

  1. Вернитесь в корневой каталог приложения и запустить его:

    $ slc run

  2. Перейдите по адресу http://localhost:3000/explorer для просмотра API Explorer.  Затем кликнете на  CoffeeShops и вы увидите новый REST endpoint, GET/CoffeeShop/status который вызывает удаленный метод (remote method).

    </figure>  

  3. Кликните Try it Out! Вы увидите результат вызова удаленного метода (remote method) :
    {
      "status": "Open for business."
    }
    

Вот как легко обавлть удаленные методы с  LoopBack! 

Для получения более подробной информации, см.  Удаленные методы.

Next: В Добавление статической страницы, вы добавите Express промежуточное ПО для обслуживания статиеского контента такого, ак HTML/CSS, картинки, и JavaScript.ткрыть Person модель через REST:

[?] Expose CoffeeShop via the REST API? (Y/n) Y

LoopBack автоматически создаст REST путь связи с вашей моделью используя множественное число имени модели. По умолчанию это множественное число имени будет создано путем добавления окончания “s”, но вы можите использовать другую форму множественного числа, если захотите. См Использование модели через REST для получения более подробной информации.  

Нажмите Enter для согласия с предложенным множественным числом по умолчанию (CoffeeShops):

[?] Custom plural form (used to build REST URL):

Каждая модель имеит свойства. Прямо сейчас вы пытаетесь  одно из свойств - “name”, для модели CoffeeShop.  

Выберите string в качестве типа свойства (нажмите Enter, так как строка это тип по умолчанию):

Let's add some CoffeeShop properties now.
Enter an empty property name when done.
[?] Property name: name
   invoke   loopback:property
[?] Property type: (Use arrow keys)
❯ string
  number
  boolean
  object
  array
  date
  buffer
  geopoint
  (other)

Каждое свойство может быть обязательным или не обязательным. Нажмите y чтоб сделать name обязательным свойством:

[?] Required? (y/N)

В конце процесса создания модели нажмите Enter когда появится вопрос о имени следующего свойства.

Проверка структуры проекта

Файлы и папки проекта LoopBack находятся в корневой папке приложения.  В этом каталоге стандартная структура LoopBack проекта состоит из трех подпапок:

  • server - Node приложение, скрипты и файлы конфигурации.
  • client - клиентские JavaScript, HTML, и CSS файлы.
  • common - Общие файлы для сервера и клиента. Подкаталог /models содержит все JSON и JavaScript файлы моделей.
Файлы или папки Описание Как получить доступ в коде
Каталог верхнего уровня
package.json

Стандартные спецификации npm пакетов. См. package.json

N/A
/server папка- файлы Node приложения 
server.js Основной файл приложения (сам сервер).  N/A
config.json Настройки приложения. См. config.json. app.get('option-name')
datasources.json  Файл конфигурации источников данных. См. datasources.json. app.datasources['datasource-name']
model-config.json Файл конфигурации модели. См. model-config.json. N/A
middleware.json Middleware definition file. N/A
/boot папка Дополнительные скрипты для выполнения инициализации и настройки. См. boot scripts. Сценарии выполняются автоматически в алфавитном порядке.
/client папка- клиентские файлы приложения
README.md LoopBack генераторы создают пустые README в markdown формате. N/A
Другие Ваши дополнительные HTML, CSS, клиентские JavaScript файлы.  
/common папка - общие файлы приложения
/models папка

Пользовательские файлы модели:

  • Определения модели по конвенции имени modelName.json; например customer.json.
  • Пользовательские скрипты одели по конвенции имени modelName.js; например customer.js.

См. Model definition JSON file.

Node:
myModel = app.models.myModelName

Кроме того каталоги верхнего уровня содержат заглушку README.md файл, и node_modules папку (требующихся для Node модулей ).

Для более подробной информации о канонической структуре LoopBack приложения, см Справка по проектированию проекта.

Запуск приложения

Запустите приложения с помощью команды slc run:

$ slc run
INFO strong-agent API key not found, StrongOps dashboard reporting disabled.
Generate configuration with:
    npm install -g strongloop
    slc strongops
See http://docs.strongloop.com/strong-agent for more information.
supervisor running without clustering (unsupervised)
Browse your REST API at http://0.0.0.0:3000/explorer
Web server listening at: http://0.0.0.0:3000/

Если вы хотите запустить сервер в многопроцессовом кластере, используйте следующую команду: 

$ slc run --cluster cpus

Откройте в браузере http://0.0.0.0:3000/ (на некоторых системах возможно придется использовать такой адрес  http://localhost:3000).  Вы уведите  стандартную страницу ответа приложения, которая будет отображать JSON с информацией о состоянии приложения; для примера:

{"started":"2014-11-20T21:59:47.155Z","uptime":42.054}

А теперь откройте в вашем браузере http://0.0.0.0:3000/explorer или http://localhost:3000/explorer.  Вы увидите StrongLoop API Explorer:

</figure>

Путем простых шагов, используя  LoopBack, вы создали CoffeeShop модель, определили ее свойства а затем вывели ее через  REST. 

Next: Используя API Explorer, вы можете рассмотреть REST API модель, которую вы только что создали более подробно и осуществить другие операции.