解析参数以表示端点
Parsing parameters to express endpoint
我有几个正在查询数据库的快速端点 运行。我正在尝试像这样解析我的快速网关中的参数:
paths: ['/users', '/users/:userId']
用户端点是本地主机上的 运行,/users
按预期执行 return 所有用户。问题是 /users/:userId
也 return 所有用户 - 它应该只有 return 一个。
当我尝试在没有网关的情况下调用端点时它工作正常 (http://localhost:3000/users/F692D717-F304-4D9B-A302-44F143923A93/)
但它无法通过网关工作。它似乎永远不会到达最后一个端点或不解析参数。
我的gateway.config.yml
:
http:
port: 8080
admin:
port: 9876
hostname: localhost
apiEndpoints:
users:
host: "*"
paths: ['/users', '/users/:userId']
accounts:
host: "*"
paths: '/accounts'
companies:
host: "*"
paths: '/companies'
serviceEndpoints:
users:
url: 'http://localhost:3000/users'
accounts:
url: 'http://localhost:3002/accounts'
companies:
url: 'http://localhost:3001/companies'
policies:
- basic-auth
- cors
- expression
- key-auth
- log
- oauth2
- proxy
- rate-limit
pipelines:
users:
apiEndpoints:
- users
policies:
- proxy:
- action:
serviceEndpoint: users
changeOrigin: false
ignorePath: true
accounts:
apiEndpoints:
- accounts
policies:
- proxy:
- action:
serviceEndpoint: accounts
changeOrigin: false
ignorePath: true
companies:
apiEndpoints:
- companies
policies:
- proxy:
- action:
serviceEndpoint: companies
changeOrigin: false
ignorePath: true
您是否尝试过将 ignorePath
设置为 false
?这应该可以解决问题,或者,只需从文件中删除该选项,因为它的默认值为 false
找到解决办法。在给定端点的代理策略操作下,我需要设置 prependPath:false
。我似乎无法在文档中找到原因。
决赛 gateway.config.yml
:
http:
port: 8080
admin:
port: 9876
hostname: localhost
apiEndpoints:
users:
host: "*"
paths: ['/users', '/users/:userId']
accounts:
host: "*"
paths: '/accounts'
companies:
host: "*"
paths: '/companies'
serviceEndpoints:
users:
url: 'http://localhost:3000/users'
accounts:
url: 'http://localhost:3002/accounts'
companies:
url: 'http://localhost:3001/companies'
policies:
- basic-auth
- cors
- expression
- key-auth
- log
- oauth2
- proxy
- rate-limit
pipelines:
users:
apiEndpoints:
- users
policies:
- proxy:
- action:
serviceEndpoint: users
changeOrigin: false
prependPath: false
accounts:
apiEndpoints:
- accounts
policies:
- proxy:
- action:
serviceEndpoint: accounts
changeOrigin: false
prependPath: false
companies:
apiEndpoints:
- companies
policies:
- proxy:
- action:
serviceEndpoint: companies
changeOrigin: false
prependPath: false
我有几个正在查询数据库的快速端点 运行。我正在尝试像这样解析我的快速网关中的参数:
paths: ['/users', '/users/:userId']
用户端点是本地主机上的 运行,/users
按预期执行 return 所有用户。问题是 /users/:userId
也 return 所有用户 - 它应该只有 return 一个。
当我尝试在没有网关的情况下调用端点时它工作正常 (http://localhost:3000/users/F692D717-F304-4D9B-A302-44F143923A93/)
但它无法通过网关工作。它似乎永远不会到达最后一个端点或不解析参数。
我的gateway.config.yml
:
http:
port: 8080
admin:
port: 9876
hostname: localhost
apiEndpoints:
users:
host: "*"
paths: ['/users', '/users/:userId']
accounts:
host: "*"
paths: '/accounts'
companies:
host: "*"
paths: '/companies'
serviceEndpoints:
users:
url: 'http://localhost:3000/users'
accounts:
url: 'http://localhost:3002/accounts'
companies:
url: 'http://localhost:3001/companies'
policies:
- basic-auth
- cors
- expression
- key-auth
- log
- oauth2
- proxy
- rate-limit
pipelines:
users:
apiEndpoints:
- users
policies:
- proxy:
- action:
serviceEndpoint: users
changeOrigin: false
ignorePath: true
accounts:
apiEndpoints:
- accounts
policies:
- proxy:
- action:
serviceEndpoint: accounts
changeOrigin: false
ignorePath: true
companies:
apiEndpoints:
- companies
policies:
- proxy:
- action:
serviceEndpoint: companies
changeOrigin: false
ignorePath: true
您是否尝试过将 ignorePath
设置为 false
?这应该可以解决问题,或者,只需从文件中删除该选项,因为它的默认值为 false
找到解决办法。在给定端点的代理策略操作下,我需要设置 prependPath:false
。我似乎无法在文档中找到原因。
决赛 gateway.config.yml
:
http:
port: 8080
admin:
port: 9876
hostname: localhost
apiEndpoints:
users:
host: "*"
paths: ['/users', '/users/:userId']
accounts:
host: "*"
paths: '/accounts'
companies:
host: "*"
paths: '/companies'
serviceEndpoints:
users:
url: 'http://localhost:3000/users'
accounts:
url: 'http://localhost:3002/accounts'
companies:
url: 'http://localhost:3001/companies'
policies:
- basic-auth
- cors
- expression
- key-auth
- log
- oauth2
- proxy
- rate-limit
pipelines:
users:
apiEndpoints:
- users
policies:
- proxy:
- action:
serviceEndpoint: users
changeOrigin: false
prependPath: false
accounts:
apiEndpoints:
- accounts
policies:
- proxy:
- action:
serviceEndpoint: accounts
changeOrigin: false
prependPath: false
companies:
apiEndpoints:
- companies
policies:
- proxy:
- action:
serviceEndpoint: companies
changeOrigin: false
prependPath: false