Вы можете легко добавить версионность вашему 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
Important:
Changing the API root in this way doesn’t affect routes set in request-handling middleware or the route to API Explorer itself, which remains http://localhost:3000/explorer
.
ed.git
$ cd loopback-getting-started
$ git checkout step2
$ npm install
Добавление удаленного метода (remote method)
Выполните следующие действия:
-
Откройте каталог приложения
/common/models
. Вы увидите что там лежитcoffee-shop.js
файл.Note:
LoopBack генератор модели (
slc loopback:model
) всегда создает два файла в/common/models
для каждой модели: JSON файл с именем вида<_model-name_>.json
с описанием свойств модели и JavaScript файл вида<_model-name_>.js
где вы можите расширить и переопределить поведение модели.
</div>
-
Откройте
coffee-shop.js
в вашем любимом редакторе. По умолчанию он содержит пустую функцию:module.exports = function(CoffeeShop) {};
-
Добавьте следующий код в эту функцию для расширения поведения модели с удаленным методом (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) для получения более подробной информации.
-
Сохраните файл.
Попробуйте удаленный метод (remote method)
-
Вернитесь в корневой каталог приложения и запустить его:
$ slc run
- Перейдите по адресу http://localhost:3000/explorer для просмотра API Explorer. Затем кликнете на CoffeeShops и вы увидите новый REST endpoint,
GET/CoffeeShop/status
который вызывает удаленный метод (remote method). - Кликните 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 когда появится вопрос о имени следующего свойства.
Проверка структуры проекта
Important:
Ниже описана структура приложения, которая создается с помощью slc loopback
команд. LoopBack не требует, чтоб вы следовали данной структуры, но если вы этого не сделаете, вы не сможете использовать slc loopback
команды для изменения и расширения вашего приложения.
Файлы и папки проекта LoopBack находятся в корневой папке приложения. В этом каталоге стандартная структура LoopBack проекта состоит из трех подпапок:
server
- Node приложение, скрипты и файлы конфигурации.client
- клиентские JavaScript, HTML, и CSS файлы.common
- Общие файлы для сервера и клиента. Подкаталог/models
содержит все JSON и JavaScript файлы моделей.
Note:
Все ваши JSON и JavaScript файлы модели находятся в /common/models
папке.
Файлы или папки | Описание | Как получить доступ в коде |
---|---|---|
Каталог верхнего уровня | ||
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 папка |
Пользовательские файлы модели:
|
Node: |
Кроме того каталоги верхнего уровня содержат заглушку 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/
Note:
Запуск приложения с помощью slc
(StrongLoop Controller) происходит также как при использовании node
команд, но slc
предоставляет возможность кластеризации, логирования , мониторинга и других опций. См Работа Node приложений and Начало работы для получения более детальной информации о возможносятх slc
консоли.
Если вы хотите запустить сервер в многопроцессовом кластере, используйте следующую команду:
$ 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: