【发布时间】:2018-01-31 15:50:17
【问题描述】:
我已经构建了一个 API,您可以在其中注册回调 URL。
使用 Apache UrlValidator 类验证 URL。
我现在必须添加一个允许在配置的 URL 中添加占位符的功能。
https:/foo.com/${placeholder1}/bar/${placeholder2}
这些占位符将使用 Apache StrSubstitutor 或类似名称动态替换。
现在我的问题是,如何使用占位符验证 URL?
我已经想到了一个解决方案:
- 我将预期的占位符替换为示例值
- 然后我使用 Apache UrlValidator 验证 URL
我对这个解决方案的问题是 Apache UrlValidator 只返回一个布尔值,所以错误消息会很模糊。
除了创建我自己的正则表达式之外,还有其他解决方案吗?
更新:关注 cmets 中的讨论
允许的占位符数量有限。
替换占位符的字符串格式也是已知的。
第一个目标是能够检查最终包含占位符的给定 URL 在配置时是否有效。
第二个目标是,如果 URL 无效,则返回可理解的错误消息。
有多种错误情况:
- URL 中使用的占位符不在允许的占位符列表中
- 独立于占位符的 URL 无效
【问题讨论】:
-
什么时候你要验证:在替换之前还是之后?
-
替换前,回调配置创建时。占位符是已知的,我可以做一个样本替换。
-
您要单独清理替换字符串吗?假设你有一个好的骨架,然后使用
":::::"之类的东西作为替代品? -
替换字符串已经被指定和清理(序列号和ID...)。
-
这是
https:/foo.com/一个有效的网址吗?另外,您希望占位符在 url 中的什么位置?
标签: java regex validation url