Пример приложения LoopBack
Если вы не прошли Начало работы с LoopBack, то сейчас самое время это сделать.
Для более глубокого понимания LoopBack и того, как он работает, прочитайте Определение модели и Соединение модели с базой данных. руководство пошаговый опишет создание простого LoopBack приложения.
На GitHub вы найдете репозиторий loopback-getting-started с готовым приложением, создание которого будет описываться в данном руководстве. Вы можите скачать его себе и пройти шаг за шагом, которые мы для вас заблаговременно подготовили в виде тегов tags.
Вы можите выполнить все пошагово для того, чтоб создать приложение и понять смысл некоторых вещей в LoopBack , или просто перейти к тому шагу, который вас интересует:
- Создание простого API
- Использование API Explorer
- Подключение вашего API к хранилищам данных
- Расширьте свой API
- Добавление статической веб-страницы
- Добавить пользовательски маршрут Express
- Узнать больше�мках Loopback:
- iOS SDK (Objective C) для iPhone и iPad приложений. См. iOS SDK для получения более подробно информации.
- Android SDK (Java) для Android приложений. См. Android SDK для получения более подробно информации.
- AngularJS (JavaScript) для HTML5 front-ends. См. AngularJS JavaScript SDK для получения более подробно информации.
Какие коннекторы данных есть в LoopBack?
LoopBack provides numerous connectors to access enterprise and other backend data systems.
LoopBack предоставляет многочисленные коннекторы для доступа крупных проектов и других backend систем данных.
Коннекторы баз данных:
- Memory connector
- MongoDB connector
- MySQL connector
- Oracle connector
- PostgreSQL connector
- Redis connector
- SQL Server connector
- ATG connector
- Email connector
- Push connector
- Remote connector
- REST connector
- SOAP connector
- Storage connector
Кроме того, есть общественные соединители, созданные разработчиками в LoopBack сообществе с открытым исходным кодом.
Почему curl запрос к моему LoopBack приложению терпит неудачу?
If the URL loads fine in a browser, but when you make a curl request to your app you get the error:
Если URL загружается в браузере хорошо, но когда вы делаете curl запрос к вашему приложению вы получаете сообщение об ошибке:
curl: (7) Failed to connect to localhost port 3000: Connection refused
Причиной скорей всего будет несовместимость IP версии между вашим приложением и curl .
На Mac OS 10.10 (Yosemite), curl использует IP v6 по умолчанию.
LoopBack, по умолчанию использует IP v4, а curl может использовать IP v6. Если вы увидите IP v6 запись в вашем фале хоста (::1 localhost, fe80::1%lo0 localhost), вполне вероятно, что curl делает запрос используя IP v6. Для того, чтоб сделать запрос используя IP v4, укажите свой —ipv4 параметр в вашем curl запросе, как показано ниже.
$ curl http://localhost:3000 —ipv4
Вы можите сделать, чтоб ваше LoopBack приложение использовало IP v6, указав адрес IP v6, как показано ниже:
app.start = function() // start the web server return app.listen(3000, '::1', function() app.emit('started'); console.log('Web server listening at: %s', app.get('url')); >); >;
Более конкретные вопросы
После того, как вы начнете работать с LoopBack, у вас могут появится более конкретные вопросы. Наиболее распространенные из них мы собрали тут с короткими вопросами и ссылками на документацию для получения полного ответа.
Как вы выполняете GET запрос на удаленный сервер?
Во-первых, вы должны настроить источник данных, используя REST коннектор. В datasources.json файле, который конфигурирует источник данных, вы можите задать операцию обратную REST API, используя свойства операций.
Может приложение возвращать XML вместо JSON?
Да: в server/config.json установить свойство remoting.rest.xml как true . См. config.json для получения более детальной информации.
Как послать email из приложения?
- Настроить источник данных для использования email коннекта.
- Спроектируйте Email модель в источник данных email.
- Отправить email используя модель настроенную с помощью Email.send() .
How do you use static middleware?
Static middleware enables an application to serve static content such as HTML, CSS, images, and client JavaScript files. To add it:
- Remove the contents of the default «routes» property in middleware.json .
- Add the following to the «files» property in middleware.json : to serve static content from the project’s /client directory.
"loopback#static": "params": "$. /client" >
See Defining middleware for more information, and loopback-faq-middleware for a short example.
What kind of hooks do models support?
Model hooks are functions that are executed when certain events occur in a model’s lifecycle. LoopBack models many different hooks, for example: afterInitialize after a model is initialized, beforeValidate / afterValidate (before and after model validation), beforeSave / afterSave (before and after a model is saved), and so on.
See Model hooks for a complete list and more information. See loopback-faq-model-hooks for a brief example.
Вопросы управления пользователями
See Управление пользователями for more information and loopback-faq-user-management for relevant code examples.
См. Управление юзерами для получения более подробной информации и примеры кода loopback-faq-user-management
- Вы должны натсроить LoopBack для отправки email для email-связывания.
- Если вы используете Gmail, просто замените данные пользователя и пароль на свои учетные данные.
Как зарегистрировать нового пользователя?
- Создайте форму регистрации.
- Создайте remote hook для отправки email с подтверждением.
- При выполнении, user.verify посылает электронную почту с помощью предложенных опций.
- Верификация email настроена для redirect the user to the /verified route для общего случая. Для вашего приложения вы должны настроить перенаправление конкретно для своего случая.
- Опции self-explanitory не считая type , template and user.
- type — значением должен быть email .
- template -путь к шаблону для проверки email.
- user — когда это предусмотрено, информация в объекте будет использована в проверочной ссылке email.
Как вы отсылаете проверочный email новому юзеру?
См. шаг 2 в предыдущем вопросе.
Реализация возможности логина пользователя?
- Создайте форму входа.
- Создайте маршрута обработки запроса входа.
Реализация возможности разлогировнаия пользователя?
- Создайте ссылку разлогировнаия с access token внедренного в URL.
- Вызовите User.logout с access token.
- Мы используем loopback token middleware для обработки access tokens. До тех пор, пока вы не представите access_token в строке запроса URL, access token объекта будет представлен в req.accessToken свойстве в вашем обработчике маршрута.
Как реализовать сброс пароля для зарегистрированного пользователя
- Создайте форму сброса пароля.
- Создайте endpoint для обработки информации сброса пароля. Вызов User.resetPassword выдает resetPasswordRequest событие, и создает временный access token.
- Зарегистрируйте обработчик события resetPasswordRequest который отправит email зарегистрированному пользователю. В нашем примере, мы приводим URL, который перенаправляет пользователя на страницу сброса пароля с проверкой подлинности с временным access token.
- Создайте форму сброса пароля, где пользователь введет и подтвердит новый пароль.
- Создайте endpoint процесса сброса пароля.
Примечание: Для обработчика обратного вызова resetPasswordRequest, вам предоставляется с объектом информация, которая содержит данные, относящиеся к пользователю, который запрашивает сброс пароля.
Основные понятия LoopBack
Модели являются основой LoopBack, и представляют собой серверные источники данных, такие как базы данных или других back end сервисов (REST, SOAP, и так далее). Модели LoopBack являются JavaScript объектами, которые объединяют Node и REST APIs.
**Ключевая значительная особенность LoopBack заключается в том, что когда вы определяете модель, она автоматически сопоставляется с предопределенным REST API с полным набором CRUD операций: создание, чтение, обновление, и удаление.**
Базовая модель объекта имеет методы для добавления привязки и для валидации данных. Другая модель объектов — все “наследовать от” него. Модели имеют иерархию наследования, как показано на рисунке справа: при подключении модели к постоянному источнику данных она становится подключенной моделью с CRUD операциями; Встроенные модели наследуются от базовых моделей LoopBack .
Встроенные модели
Каждый LoopBack приложение имеет набор предопределенных встроенных моделей, таких как пользователь, роль и приложение, поэтому вам не придется создавать эти общие модели с нуля.
Пользовательские модели
Вы можете определить свои собственные модели специфичные для вашего приложения. You can make your custom models extend built-in models to build on the predefined functionality of User, Application, and other built-in models.
Модель отношений
Модели CRUD операций
При подключении модели к постоянному источнику данных, например к базе данных, он становится подключенной моделью с полным набором CRUD операций — создание, чтение, обновление и удаление, из класса PersistedModel:
Операция REST LoopBack метод модели (Node API)* Соответствующая SQL операция Создание [create()](http://apidocs.strongloop.com/loopback/#persistedmodel-create)* INSERT Чтение (извлечение) GET /modelName?filter=… [find()](http://apidocs.strongloop.com/loopback/#persistedmodel-find)* SELECT Обновление (модификация) [updateAll()](http://apidocs.strongloop.com/loopback/#persistedmodel-updateall)* UPDATE Удаление (разрушение) DELETE /modelName/modelID [destroyAll()](http://apidocs.strongloop.com/loopback/#persistedmodel-destroyall)* DELETE - Перечисленные методы являются лишь наглядными примерами; другие методы могут предоставить аналогичную функциональность; Например, в дополнение к find() , есть также findById (), findOne (), и findOrCreate ()
Логика приложения
Вы можете добавить пользовательскую логику приложения несколькими способами. Вы можете:
- Добавить логику приложения для моделей с помощью дистанционных методов (пользовательские REST endpoints),дистанционных привязок, которые срабатывают по remote методам, иmodel hooksкоторая срабатывает по модели CRUD методов.
- Добавить загрузочные скрипты, которые будут запускаться при запуске приложения.
- Define custom middleware, similar to Express middleware.
You can add code to Validate data before saving it to the model and back-end data store.
Фаза промежуточных функций
Промежуточные функции относится к функциям, которые выполняются, когда HTTP запрос делается на REST endpoints. Поскольку LoopBack основан на Express, LoopBack промежуточные функции такие же как Express промежуточные функции. Тем не менее, в LoopBack добавляется понятие фазы, чтобы четко определить порядок в котором вызываться эти функции. Использование фаз, помогает избежать вопросов упорядочения, которые могут возникнуть со стандартными Express промежуточными функциями.
См. Определение промежуточных функций для получение подробной информации.
Источники данных и коннекторы
