Sie können die Präfix-Eigenschaft in config/controller.js auf /api/v1
setzen. Beachten Sie jedoch, dass das Präfix nur den Blueprint-Routen hinzugefügt wird (die automatisch von Sails generiert werden).
Mit dem Präfix /api/v1
und der Route /some
könnte man also auf uri /api/v1/some
zugreifen.
Aber wenn Sie Ihre Routen wie folgt deklarieren: "post /someEndPoint": {controller: "someController", action: "someAction"}
, das Präfix tut nichts.
In diesem Fall müssen Sie sie wie folgt manuell schreiben: post /api/v1/someEndPoint
und auf false der actions
Eigenschaft von config/controller.js
(zumindest in der Produktion) automatisch erzeugte Routen für jede Aktion in Ihrem Controller auszuschalten.
@EDIT 08.08.2014
Das Vorstehende gilt für Versionen von Sails.Js
kleiner als v0.10. Da ich mit Sails nicht mehr arbeite, weiß ich nicht, was nun für die aktuelle Version des Frameworks gilt.
@EDIT 14.08.2014
Für Versionen von sails.js> = 0,10, die Konfigurationsdatei, in der das Präfix gesetzt werden kann, ist config/blueprints.js
. Es hat die gleiche Funktionalität wie für ältere Versionen.
@Edit 07.09.2015
Soweit ich weiß, wird der Rahmen nicht ein globales Präfix für manuell definierten Routen unterstützen, aber da Sie noch können Sie Javascript in Ihrer Konfigurationsdatei verwenden (da die Konfiguration Dateien sind NodeJs-Module und keine JSON-Dateien), Sie können diese Funktionalität ganz nach Bedarf anpassen.
Angenommen, die prefix
-Eigenschaft ist in Ihrer Blueprints-Konfigurationsdatei auf /api
eingestellt, können Sie diesen Code in Ihren Routen haben.
var blueprintConfig = require('./blueprints');
var ROUTE_PREFIX = blueprintConfig.blueprints.prefix || "";
// add global prefix to manually defined routes
function addGlobalPrefix(routes) {
var paths = Object.keys(routes),
newRoutes = {};
if(ROUTE_PREFIX === "") {
return routes;
}
paths.forEach(function(path) {
var pathParts = path.split(" "),
uri = pathParts.pop(),
prefixedURI = "", newPath = "";
prefixedURI = ROUTE_PREFIX + uri;
pathParts.push(prefixedURI);
newPath = pathParts.join(" ");
// construct the new routes
newRoutes[newPath] = routes[path];
});
return newRoutes;
};
module.exports.routes = addGlobalPrefix({
/***************************************************************************
* *
* Make the view located at `views/homepage.ejs` (or `views/homepage.jade`, *
* etc. depending on your default view engine) your home page. *
* *
* (Alternatively, remove this and add an `index.html` file in your *
* `assets` directory) *
* *
***************************************************************************/
// '/': {
// view: 'homepage'
// },
/***************************************************************************
* *
* Custom routes here... *
* *
* If a request to a URL doesn't match any of the custom routes above, it *
* is matched against Sails route blueprints. See `config/blueprints.js` *
* for configuration options and examples. *
* *
***************************************************************************/
'post /fake': 'FakeController.create',
});
Dank. Aber das ist irgendwie, was ich zu vermeiden hoffte ... ich hatte * gehofft * Segel hatten eine einfache Konfiguration, die das erlaubte (getrennt von den Bauplänen). Aber es scheint, dass ich es manuell konfigurieren muss ... – rcheuk
@harmlessdragon ja, ich hatte das gleiche Problem und ich dachte, das Präfix sollte es lösen, aber tat es nicht. Du musst also dein Präfix für jede Route manuell schreiben, ich habe es auch getan ... Ich weiß, dass es irgendwie chaotisch ist, aber ich habe gesehen, dass es eine Diskussion darüber gab, um diesen Routen auch das Präfix hinzuzufügen. Der gute Teil ist, dass Ihre Routen in der gleichen Datei sind, und es wird einfacher sein, sie zu ändern, wenn sie die "erwartete Funktionalität" auf dem Präfix – eAbi
hinzufügen Das wird nicht auf v10 sail.js jetzt funktionieren, wie config/Controller sind veraltet –