Как указать псевдонимы маршрутов в настройках отдельных служб вместо службы шлюза API в Molecular

Как упоминалось в документации, псевдонимы маршрутов можно поместить в службу API, но я хочу указать псевдонимы в настройках отдельных служб. Как я могу это сделать?

Допустим, у меня есть служба пользователей и шлюз API,

и служба пользователей имеет действие роли, и она просто отправит обратно идентификатор в качестве примера

Если я отправлю запрос на получение /users/role/1, я получу 1 в качестве результата

Это работает так

api.service.js

"use strict";

const ApiGateway = require("moleculer-web");


module.exports = {
    name: "api",
    mixins: [ApiGateway],

    settings: {
        port: process.env.PORT || 3000,
        routes: [{
            path: "/api",
            whitelist: [
                // Access to any actions in all services under "/api" URL
                "**"
            ],
            aliases: {
                "GET users/role/:uid": "users.role"
            }
        }],

        // Serve assets from "public" folder
        assets: {
            folder: "public"
        },
    },
};

users.service.js

"use strict";

module.exports = {
    name: "users",

    /**
     * Service settings
     */
    settings: {},

    /**
     * Actions
     */
    actions: {
        role: {
            cache: {
                keys: ["uid"]
            },
            rest: "GET role/:uid",
            handler(ctx) {
                return ctx.params.uid
            }
        }
    },
};

хотел что-то вроде этого

api.service.js

"use strict";

const ApiGateway = require("moleculer-web");


module.exports = {
    name: "api",
    mixins: [ApiGateway],

    settings: {
        port: process.env.PORT || 3000,
        routes: [{
            path: "/api",
            whitelist: [
                // Access to any actions in all services under "/api" URL
                "**"
            ]
        }],

        // Serve assets from "public" folder
        assets: {
            folder: "public"
        },
    },
};

users.service.js

"use strict";

module.exports = {
    name: "users",

    /**
     * Service settings
     */
    settings: {
        routes: [{
            path: "/",
            aliases: {
                "GET role/:uid": "role"
            }
        }],

    },

    /**
     * Actions
     */
    actions: {
        role: {
            cache: {
                keys: ["uid"]
            },
            rest: "GET role/:uid",
            handler(ctx) {
                return ctx.params.uid
            }
        }
    },
};

цель состоит в том, чтобы каждая служба была разделена в своем собственном проекте, и псевдонимы для любой службы могли быть помещены в него, а не в службу API.


person Mohamed SLimani    schedule 31.12.2019    source источник