在Express.js中,如果我的参数值在值的某个位置包含冒号,那么我会在值前面得到冒号



这是我的简单express.js代码,以及GET路由:

app.get(path + hashKeyPath, function (req, res) {
res.json({
data: JSON.stringify(req.params.CognitoIdentity),
dekor: JSON.stringify(
req.apiGateway.event.requestContext.identity.cognitoIdentityId
),
});
const path = '/address';
const partitionKeyName = 'CognitoIdentity';
const hashKeyPath = '/:' + partitionKeyName;

现在,当我发送请求时,我的参数可以在字符串中包含冒号(aws-congnito标识是这样构建的,不确定他们为什么要在里面放冒号而不是破折号,但可以):eu-west-1:ea6b2959-8718-42b9-b8b8-ce82e9d9e7a0,它只返回冒号作为响应。

config: {url: 'https://xxx.execute-api.eu-west-1.amazonaws…s/:eu-west-1:ea6b2959-8718-42b9-b8b8-ce82e9d9e7a0', method: 'get', data: null, headers: {…}, transformRequest: Array(1), …}     

data:{data:":eu-west-1:ea6b2959-8718-42b9-b8b8-ce82e9d9e7a0",dekor:"null"}

当参数值中有coon时,我如何获得实际值,该值将是eu-west-1:ea6b2959-8718-42b9-b8b8-ce82e9d9e7a0,而不是冒号作为第一个字符eu-west-1:ea6b2959-8718-42b9-b8b8-ce82e9d9e7a0?我想是因为eu-west-1之后的冒号。。。

编辑:所以看起来无论你通过什么,它都会在前面得到:,哈哈,什么??

config: {url: 'https://xxx.execute-api.eu-west-1.amazonaws.com/dev/address/:kontono-test', method: 'get', data: null, headers: {…}, transformRequest: Array(1), …}
data: {data: ':kontono-test', dekor: 'null'}

在您的示例中,您发送的值带有URL param:中的前导:

/:kontono-test

/:eu-west-1:ea6b2959-8718-42b9-b8b8-ce82e9d9e7a0

尝试在没有:的情况下调用这些端点。Express不会从参数中删除前导:,因为这可能是其有效部分。

当您使用URL参数时,不必在URL中添加:。例如:在/address/:identity中,:identity将在req.params.identity下可用,您可以这样调用此端点:

GET http://localhost:3000/address/foobar->req.params.identity == 'foobar'

GET http://localhost:3000/address/:foobar->req.params.identity == ':foobar'

CCD_ 19->req.params.identity == 'foo:bar:'

GET http://localhost:3000/address/:foo:bar:->req.params.identity == ':foo:bar:'

相关内容

最新更新