在uri-template语法中,扩展用大括号表示。返回模板化链接时,url-encode(即百分比编码)是不正确的,例如在API响应中?
http://foo.example.com/users/{?user_id}
与
http://foo.example.com/users/%7B?user_id%7D
似乎该标准的这一段可能是相关的,并表明它们必须不被转义,但我不确定:
http://tools.ietf.org/html/rfc6570#section-1.2
默认表达式类型是简单的字符串扩展, 其中单个命名变量被其值替换为字符串 在pct编码之后,任何不在未保留URI集合中的字符 字符
答案 0 :(得分:1)
是的,如果意图是将字符串用作URI模板而不是URI,则对URL模板令牌进行URL编码是不正确的。请记住,URI模板在扩展之前不是URI。如果对它们进行编码,则可以将其视为URI而不是模板。我为Java维护Handy URI Templates处理器,它将无法处理这样的编码令牌,并将字符串视为URI。希望有所帮助。