Delete API路径变量%3B被网关截断,返回404而非400的原因咨询
问题原因解析
- 网关的路径默认处理规则:多数API网关会遵循HTTP规范,把URL中的
;识别为路径参数的分隔符,自动剥离;及其后续内容。你传入的476%3B解码后是476;,网关直接去掉了;,只把476传给了后端应用。 - 后端执行逻辑的变化:原本后端拿到
476%3B时,执行Integer.parseInt("476%3B")会立刻抛出数字格式异常,后端框架一般会捕获这个异常,返回400(请求格式错误)。但网关处理后,后端拿到的是合法整数476,解析步骤不会报错,会继续执行资源查询逻辑。 - 404的产生原因:后端用合法的
476去查找对应资源,结果系统里根本没有这个ID的记录,所以返回了404(资源不存在)。 - 核心问题:网关的自动处理把原本格式非法的请求,转换成了格式合法但资源不存在的请求,这才导致预期的
400变成了实际的404。
内容的提问来源于stack exchange,提问作者user1313503
相关产品推荐
相关产品推荐

