You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何请求ID含URL编码'%'的OData资源解决404报错

问题根因

返回404的核心原因是URL多层编码与OData路径解析规则冲突:

  • 存储的实体ID字面量为%252F1.wav,字符串本身包含URL编码保留字符%,其中%25是%的一次编码结果,%2F是/的一次编码结果,该ID实际包含两层编码后的特殊字符。
  • 直接拼接Item('%252F1.wav')发起请求时,OData服务端会自动对路径段内的百分号做一次解码,将%25解析为%,最终实际匹配的ID为%2F1.wav,和存储的真实ID不匹配。同时ID中隐含的斜杠字符如果编码不当,还会被服务端识别为路径分隔符,导致路由错误。
可行解决方案

方案1:正确编码ID后拼接路径(GET/DELETE通用,优先使用)

针对路径段内的特殊字符,需要对原始ID做一次标准URL路径编码:将原始ID中的每个%编码为%25,最终编码后的ID字符串为%25252F1.wav,拼接后的合法请求格式如下:
获取资源:

https://randomOdataService.com/items/Item('%25252F1.wav')

删除资源时直接将请求方法替换为DELETE,请求路径保持一致即可。

方案2:使用$filter查询参数绕过路径解析(适配特殊服务端场景)

如果上述编码后仍然返回404,说明服务端对路径段做了多层强制解码,可以改用查询参数传过滤条件,查询参数的解析逻辑独立于路径段,不会出现自动解码错位问题:

https://randomOdataService.com/items/Item?$filter=ID eq '%252F1.wav'

注意:DELETE方法不支持直接搭配$filter参数执行删除,可先通过上述GET请求拿到实体返回的完整上下文地址,再对该地址发起DELETE请求即可。

内容的提问来源于stack exchange,提问作者cinemandre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:15:37