%の後に数字を含むURLにhttp.NewRequest("GET", url , nil)
を使用する場合、*は例:https://api.deutschebahn.com/freeplan/v1/journeyDetails/356418%252F128592%252F57070%252F90271%252F80%253fstation_evaId%253D8000261
となります)Goはその文字列をURLの "/"にエンコードします。どうすればそれを避けることができますか?URL入力をデコードするhttp.NewRequest()
答えて
明示的URL構造体のRawPath
フィールド設定:Pathフィールドを復号形式で格納されていることを
注:/%47この機能は、このユースケース用documentedある
req := http.NewRequest("GET", "https://api.deutschebahn.com/freeplan/v1/journeyDetails/356418%252F128592%252F57070%252F90271%252F80%253fstation_evaId%253D8000261", nil) req.URL.RawPath = "/freeplan/v1/journeyDetails/356418%252F128592%252F57070%252F90271%252F80%253fstation_evaId%253D8000261"
を%6f%2fは/ Go /となる。結果として、パスのスラッシュが生のURLにスラッシュであったかどうかを知ることは不可能で、%2fでした。この区別はめったに重要ではありませんが、そうである場合、コードはPathを直接使用してはなりません。
Go 1.5では、Pathのエンコードされた形式を保持するRawPathフィールドが導入されました。 Parse関数は、返されるURLにPathとRawPathの両方を設定し、URLのStringメソッドは、Pathの有効なエンコーディングであれば、EscapedPathメソッドを呼び出してRawPathを使用します。
これで私はすぐに問題を解決することができましたが、Url.RawPathを設定してもうまくいきませんでした。代わりに、私はQueryEscape(文字列)関数を使用してURLのその部分をエスケープしました。 – SparklingWater
@ SparklingWater:これはあなたのケースで「うまくいく」かもしれませんが、それは正しい解決策ではありません。 QueryEscapeは、パスエスケープとは異なる規則に従います。 少なくとも、代わりに 'PathEscape()'を使うべきです。適切な解決策を得るには、実際のコードを見て、リクエストがどのように使用されているかを確認するとよいでしょう。 – Flimzy
- 1. 入力ストリームのデコード
- 2. デコードbase64:無効な入力
- 3. 入力フィールドに入力するURL
- 4. asp.netのURLをデコードする
- 5. JavaでURLをデコードする
- 6. phpでURLをデコードする
- 7. ユーザー入力を特殊文字でデコード
- 8. 動的に増加する入力幅の例をデコードする
- 9. URL入力ファイル
- 10. NSString URLのデコード?
- 11. GTM URLデコード
- 12. Foreach URL JSONデコード
- 13. デコードURL Javascript/JQuery
- 14. ファイルの入力でURLを入力する
- 15. 入力された文字列またはアルファベットをデコードする
- 16. URLを入力して処理する
- 17. URLのデコード属性
- 18. ユニコード用のURLデコード
- 19. URLにエスケープ文字をデコードする
- 20. URLから16進数をデコードする
- 21. URLの "¥u0026"をデコードする方法は?
- 22. ユーザー入力でURLをロード
- 23. $ _GETからデコードして文字列を入力して返す
- 24. URLでドロップダウンメニューに入力する
- 25. ファイルURLに画像URLを入力する
- 26. $ location.urlのURLデコードを避けるには?
- 27. php - perlプロセスへのパイプ入力は、自動的にURLエンコードされた文字列をデコードします。
- 28. 角度入力タイプ= "select url"
- 29. HTML - 入力ファイルタイプのトリガーURL
- 30. url - 複数の入力タイプを使用してフォームにデータを入力する
https://api.deutschebahn.com/freeplan/v1/journeyDetails/356418%252F128592%252F57070%252F90271%252F80%253fstation_evaId%253D8000261 – SparklingWater
だから、実際にエンコードされた要素を持っているURLパスの一部です。あなたがそれを解読するのがなぜ問題なのですか?あなたの最終目標は何ですか? – Flimzy
リクエストがこのようなものであるため、1/journeyDetails/244815/84952/449280/143035/80?station_evaId = 8098160この部分を含むURL文字列の場合244815%2F84952%2F449280%2F143035%2F80%3fstation_evaId%3D8098160 これは残念なことに、間違ったリクエストを私に残します。 – SparklingWater