Невозможно создать версионный API в SailJS

1

Прежде всего, версия различных зависимостей
Ubuntu - 15.04
NodeJS - 6.10.3
НПМ - 3.10.10
Паруса - 0.12.13

Во-вторых, вот что я сделал:
1. Установленные паруса по всему миру
2. В каталоге /var/www запущена команда sails new app
3. Создал файл UserController.js в api/controllers/v1
4. Создал файл User.js в api/models

Код для UserController.js

module.exports = {

  findOne: function(req, res) {

    return res.send("Hello World!!! User -> findOne");
  },

  login: function(req, res) {

    return res.send("Hello World!!! User -> login");
  }
}

Код для User.js

module.exports = {}

Теперь, когда я запускаю свой сервер с помощью sails lift, вот что происходит:


Я знаю, что я буду казаться глупым, но я подумал, что это, вероятно, потому, что я не использовал функцию Generator для Sails. Итак, вот что я сделал дальше: sails generate api v1/Product. И структура файла после этой команды выглядит так:

api  
|-- controllers  
    |-- v1  
        |-- UserController.js
    |-- V1  
        |-- ProductController.js
|-- models  
    |-- User.js  
    |-- V1  
        |-- Product.js  

Я написал аналогичный код в ProductController.js как и в UserController.js и я ожидал, что теперь API продукта должен работать, но результат был таким же, как в случае /v1/user/1.


В соответствии с API SailJS Blueprint это должно сработать. Итак, может ли кто-нибудь объяснить, почему это происходит, и как я могу заставить /v1/user/1 и /v1/user/login работать как и ожидалось.

Теги:
rest
sails.js

1 ответ

1

У вас есть несколько способов добиться этого. Первый вариант - установить restPrefix в /v1 внутри config/blueprints.js

Дополнительный путь монтирования для всех маршрутов маршрута REST на контроллере, и он не включает маршруты actions и shortcuts. Это позволяет вам использовать маршрутизацию маршрута REST, даже если вам нужно использовать пространство имен для методов RESTful API

Теперь с той же структурой каталогов, т. /controllers/v1/UserController.js и /models/User.js, вы должны иметь доступ к методам /login и findOne.

Второй вариант - установить prefix в /v1 внутри config/blueprints.js

Дополнительный путь монтирования для всех маршрутов проекта на контроллере, включая rest, actions и shortcuts. Это позволяет вам использовать маршрутизацию чертежей, даже если вам нужно пространство имен для ваших методов API. (ПРИМЕЧАНИЕ. Это относится только к sails.config.routes чертежей, а не к ручным маршрутам из sails.config.routes)

Теперь структура каталогов будет /controllers/UserController.js и /models/User.js. У вас есть настройка mapping /v1 для вас.

С другой стороны, вы можете полностью отключить маршруты маршрута и настроить свои собственные маршруты внутри /config/routes.js. Это даст вам большую гибкость, и вы также можете иметь маршруты, связанные с environment внутри config/env/[your_env].js

  • 0
    Оба метода действительны, но если я хочу запустить два API /v1/user/1 и v2/user/1 , первые два метода не будут работать. Кроме того, если число API в сотнях, третий метод становится не масштабируемым.
  • 0
    Договорились, поэтому всегда лучше вручную настраивать маршруты внутри config/routes.js Если ваш api имеет 100 методов, api становится трудно обрабатывать.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню