일부 텍스트를 URL 인코딩 (예 : 각 공간을 % 20 (으)로 바꾸기 등)하고 싶습니다. "HTTP"Network.HTTP.Base.urlEncode를 발견하고이를 사용할 수는 있지만, 일반적으로 Yesod 생태계에서 사용되는 다른 것이 있는지 궁금합니다.Yesod 생태계에서 일부 텍스트를 urlencode하는 가장 좋은 방법은 무엇입니까?
답변
URL 이스케이프의 복잡성으로 인해 실제 답변은 "다릅니다."입니다. 예를 들어 경로 세그먼트 및 쿼리 문자열의 인코딩 비율에 약간 다른 규칙이 있습니다.
인코딩하려는 내용을 정확히 모르지만 http-types 패키지를 사용하는 것이 좋습니다. 하나의 장소는 urlEncode이 될 것입니다. 그러나 그 패키지에는 다른 많은 기능들이 있습니다 (예 : @jamshidh가 말한 encodePathSegments
).
감사합니다. Michael and jamshidh! – Tad
자세한 정보 : http://stackoverflow.com/questions/33704839/discrepancies-of-percent-encoding-for-urls –
이해하는 바와 같이 URI 인코딩은 복잡합니다. 그러나 나의 단순한 경우에, 나는 uri-encode 꾸러미로 얻을 수 있었다.
내가 필요한 모든
했다 : 당신이 상상할 수 있듯이encode :: String -> String
, 모든 그것이 문자열을하고, URI로 인코딩 된 버전을 돌려주지 않습니다.
일부 사냥을 한 후에 "http-conduit"Network.HTTP.Conduit.parseUrl이 "network"Network.URI에서 (escapeURIString isAllowedInURI)를 사용함을 발견했습니다. 다른 예이디 사람들이 사용하는 것입니까? – Tad
코드를 통해 Grep'ing, 나는 Yesod.hs의 joinPath가 Network.HTTP.Types.encodePath/encodePathSegments를 사용하여 다른 것들 사이에서 이스케이프 비율을 수행하는 경로를 만드는 것을 발견했습니다. 이것은 퍼센트 생성 된 이스케이프 된 URL을위한 것입니다 구문 분석 된 경로 개체에서 (텍스트가 아닌). – jamshidh