是否有标准字符或方式表明网址中缺少参数?
/some/[empty]/interesting/[empty]/url
?/some/-/interesting/-/url
?/some/_/interesting/_/url
?背景:
我有一个RESTful API,允许在某种类型的资源上调用某些操作:/my-resource/1234/do-something
。
但是,无需针对任何特定资源运行某些操作。到目前为止,我们已通过在网址中指定无ID来启用此功能:/my-resource//do-something-else
。
但是,我们发现某些Web服务器和代理会删除多个斜杠,将以前的URL转换为:/my-resource/do-something
,这是一个错误的URL(它正在尝试将do-something
读取为一个ID)。
我们需要两种方法在同一资源上工作(使用&无ID),因此不能使用多个路由,我们也不想更改URL结构。
< / LI>是否有标准/主流方式表明类似网址中缺少ID?到目前为止,我们正在考虑使用短划线:/my-resource/-/do-something
。
答案 0 :(得分:0)
我所看到的让我相信你应该简单地省略不相关的部分。
您正在使用的框架的文档应具有解析URL的优先级规则。只要具有通配符的模式具有较低优先级,您就应该没问题。
例如,假设API处理多个库存,您可以获得JSON表示或带有这些端点的安全数据表:
users/:userId/inventory/:inventoryId
users/:userId/inventory/:inventoryId/items/dataSheet # A aggregate data-sheet for the location
users/:userId/inventory/:inventoryId/items/:itemId
users/:userId/inventory/:inventoryId/items/:itemId/dataSheet # Just for this item
# This example is a tad facetious, as this would probably be better:
# users/:userId/inventory/:inventoryId/dataSheet
#
# But it is just an example.
由于ID应为UUID,因此用户不可能将inventory/dataSheet
误认为inventory/129c00d0a78a48318ea8aa0c66d93ddb
。此外,这清楚地说明了从/inventory/dataSheet
获得的PDF的影响。
比较这些,我发现第二个电报更明确的意图:
/users/b02e...531e/inventory/7471...dcad/items/-/dataSheet
/users/b02e...531e/inventory/7471...dcad/dataSheet
特别是因为它们之间的差异尚不清楚:
/users/b02e...531e/inventory/7471...dcad/items/-/dataSheet
/users/b02e...531e/inventory/7471...dcad/items/bf7f...9525/dataSheet