一种以宽容的方式在Ruby中标准化URI / URL的方法
我正在尝试找到一种方法从用户获取URI / URL字符串并确定一个有效的规范形式(如果资源无效则失败).同时,它还应验证URL是否存在.所以我们正在检查有效的“语法”和存在.
例如,像google.com这样的字符串应该转换为http://www.google.com,像google.com/insights这样的字符串应该变成http://www.google.com/insights.像http://thiswebsitedoesntexistatall.com这样的字符串应该返回某种错误或异常. 我相信解决方案的一部分可能正在调用HTTP get_response()方法并在重定向之后直到我获得200 OK状态. 似乎URI.parse()方法不能原谅掉掉http.我意识到我可以写一个简单的事情来尝试在前面添加http等等,但我希望有一些现有的gem或鲜为人知的库函数可以真正宽容URL并为我规范它们. 内置的net / http和HTTParty似乎对我正在寻找的东西过于严格.有一个很好的方法来做到这一点? 解决方法
您要求的是一些问题:
>当FTP和许多其他protocols同样有效时,URL解析器不应假定传入的值是HTTP.如果您知道协议可能是HTTP,那么您需要添加协议. 我建议你看看Addressable::URI宝石.它比Ruby的URI更全面.它不会为您做出决定,但至少它会为您提供更完整的API并可以重写/规范化URL.清理它们和/或确定它们是否良好仍然可以作为锻炼. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |