在 Azure API 管理中,是否可以有一个允许斜杠的模板参数(例如路径)?
In Azure API Management, is it possible to have a template parameter that allows slashes (e.g., a path)?
我正在使用 Azure Data Lake Storage 来存储大量文件。我在它前面设置了一个 Azure API 管理网关,它重写了 URI 并将后端服务设置为 ADLS REST API (Gen2).
此时我正在尝试配置 Path - Read 直通。我在 APIM 中的操作是 /data/{filesystem}/{path}?timeout={timeout}
,我希望能够按如下方式调用它:
(timeout
可选)
filesystem: MyFileSystem
path: Path/To/File.json
GET https://example.com/api/data/MyFileSystem/Path/To/File.json
但是,当我在 Azure 门户中导航到此操作并使用 Test 功能时,它报告以下错误:
{ "message": "Unable to identify Api or Operation for this request. Responding to the caller with 404 Resource Not Found." }
我知道 APIM 可能正在寻找匹配 /MyFileSystem/Path/To/File.json
的操作,但找不到。
就其价值而言,我的 Path - List 端点按我预期的方式工作,这就是为什么我知道它特别是 {path}
阻碍了我向上。
GET https://example.com/api/data/MyFileSystem?recursive=true&resource=filesystem
200 OK
我想我可以从模板参数更改为查询参数,但我现在宁愿避免使用该方法。那么,有没有办法让模板参数允许斜杠?
你说得对,三体,模板参数中的斜杠会让APIM找不到相应的操作来处理requests.What的更多,你URL编码斜杠是没用的,因为APIM会URL-如果您的参数包含会占用路径的特殊字符,请再次对其进行编码。
我在 Azure 存储上测试了你的方案,如果你用“\”代替“/”效果很好,你可以试一试:
是的。最后一个模板参数可能有斜线。使用{*路径}。
我正在使用 Azure Data Lake Storage 来存储大量文件。我在它前面设置了一个 Azure API 管理网关,它重写了 URI 并将后端服务设置为 ADLS REST API (Gen2).
此时我正在尝试配置 Path - Read 直通。我在 APIM 中的操作是 /data/{filesystem}/{path}?timeout={timeout}
,我希望能够按如下方式调用它:
(timeout
可选)
filesystem: MyFileSystem
path: Path/To/File.json
GET https://example.com/api/data/MyFileSystem/Path/To/File.json
但是,当我在 Azure 门户中导航到此操作并使用 Test 功能时,它报告以下错误:
{ "message": "Unable to identify Api or Operation for this request. Responding to the caller with 404 Resource Not Found." }
我知道 APIM 可能正在寻找匹配 /MyFileSystem/Path/To/File.json
的操作,但找不到。
就其价值而言,我的 Path - List 端点按我预期的方式工作,这就是为什么我知道它特别是 {path}
阻碍了我向上。
GET https://example.com/api/data/MyFileSystem?recursive=true&resource=filesystem
200 OK
我想我可以从模板参数更改为查询参数,但我现在宁愿避免使用该方法。那么,有没有办法让模板参数允许斜杠?
你说得对,三体,模板参数中的斜杠会让APIM找不到相应的操作来处理requests.What的更多,你URL编码斜杠是没用的,因为APIM会URL-如果您的参数包含会占用路径的特殊字符,请再次对其进行编码。 我在 Azure 存储上测试了你的方案,如果你用“\”代替“/”效果很好,你可以试一试:
是的。最后一个模板参数可能有斜线。使用{*路径}。