Node.js 如何在单个服务设置中放置路由别名,而不是在Molecular中放置API网关服务

Node.js 如何在单个服务设置中放置路由别名,而不是在Molecular中放置API网关服务,node.js,microservices,moleculer,Node.js,Microservices,Moleculer,正如文档中提到的,路由别名可以放在API服务中,但是我想把别名放在单独的服务设置中,我该怎么做呢 假设我有一个用户服务和API网关 用户服务有一个角色操作,它只会返回id作为示例 如果我向/users/role/1发送get请求,我将得到1作为结果 它是这样工作的 api.service.js 严格使用; const ApiGateway=requiremoleculer-web; module.exports={ 名称:api, mixins:[ApiGateway], 设置:{ 端口:pro

正如文档中提到的,路由别名可以放在API服务中,但是我想把别名放在单独的服务设置中,我该怎么做呢

假设我有一个用户服务和API网关

用户服务有一个角色操作,它只会返回id作为示例

如果我向/users/role/1发送get请求,我将得到1作为结果

它是这样工作的 api.service.js

严格使用; const ApiGateway=requiremoleculer-web; module.exports={ 名称:api, mixins:[ApiGateway], 设置:{ 端口:process.env.port | | 3000, 路线:[{ 路径:/api, 白名单:[ //在/api URL下访问所有服务中的任何操作 ** ], 别名:{ 获取用户/role/:uid:users.role } }], //从公用文件夹服务资产 资产:{ 文件夹:public }, }, }; users.service.js

严格使用; module.exports={ 名称:用户, /** *服务设置 */ 设置:{}, /** *行动 */ 行动:{ 角色:{ 缓存:{ 密钥:[uid] }, rest:GET role/:uid, handlerctx{ 返回ctx.params.uid } } }, }; 我想要这样的东西 api.service.js

严格使用; const ApiGateway=requiremoleculer-web; module.exports={ 名称:api, mixins:[ApiGateway], 设置:{ 端口:process.env.port | | 3000, 路线:[{ 路径:/api, 白名单:[ //在/api URL下访问所有服务中的任何操作 ** ] }], //从公用文件夹服务资产 资产:{ 文件夹:public }, }, }; users.service.js

严格使用; module.exports={ 名称:用户, /** *服务设置 */ 设置:{ 路线:[{ 路径:/, 别名:{ 获取角色/:uid:role } }], }, /** *行动 */ 行动:{ 角色:{ 缓存:{ 密钥:[uid] }, rest:GET role/:uid, handlerctx{ 返回ctx.params.uid } } }, }; 目标是每个服务在其自己的项目中分离,任何服务的别名都可以放在其中,而不是放在API服务中

// api.service.js
module.exports = {
    mixins: [ApiGateway],
    settings: {
        port: process.env.PORT || 3000,
        routes: [
            {
                path: "/",    
                whitelist: [
                    "users.**"
                ],   
                autoAliases: true
            }
        ]
    }
};

// users.service.js
module.exports = {
    name: "users",

    settings: {
        // Base path
        rest: "users/"
    },

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