具有特殊字符的路径变量,例如 Spring Boot 中的 #
Posted
技术标签:
【中文标题】具有特殊字符的路径变量,例如 Spring Boot 中的 #【英文标题】:Path variable having special characters like # in Spring boot 【发布时间】:2022-01-20 08:37:00 【问题描述】:我使用的是 Spring Boot 2.4.6。对于删除 API,找不到 405 方法。我的端点是:beauty/v1/sites/addressTemplates/:templateId
路径变量:#@$%#
有人可以建议如何使这种行为不抱怨 405 吗?如果我遗漏了什么,请指导我解决其他问题。
【问题讨论】:
尝试使用.toUri()
转换您的端点。不完全适合,但这可能会对您有所帮助 - github.com/spring-projects/spring-hateoas/issues/40
【参考方案1】:
我猜您的问题与 Spring 无关。也许您正在尝试使用 保留 字符组成整个 URL。
在 URL 中,井号、数字符号或井号 (#) 将浏览器指向页面或网站中的特定位置。它用于将对象的 URI 与片段标识符分开。 Source。
这意味着一个看起来像这样的 URL:
beauty/v1/sites/addressTemplates/#@$%#
并不是你想象的那样,因为 # 以一种特殊的方式解释。你需要做的是percent encode“特殊”路径变量,所以它最后看起来像这样:
beauty/v1/sites/addressTemplates/%23%40%24%25%23
那么 Spring 将不再抱怨,并将正确解决端点。
【讨论】:
以上是关于具有特殊字符的路径变量,例如 Spring Boot 中的 #的主要内容,如果未能解决你的问题,请参考以下文章