Прежде всего, версия различных зависимостей
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
работать как и ожидалось.
У вас есть несколько способов добиться этого. Первый вариант - установить 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
/v1/user/1
иv2/user/1
, первые два метода не будут работать. Кроме того, если число API в сотнях, третий метод становится не масштабируемым.config/routes.js
Если вашapi
имеет 100 методов,api
становится трудно обрабатывать.