文字列をURLエンコードしてURLに埋め込む方法を教えてください。私はであり、ではGETまたはPOSTデータを取得しようとしていないので、curlの-G
と--data
と--data-urlencode
のオプションは機能していないようです。例えばbashまたはcurlを使用してURLにデータをurlencodeする方法
、希望されない
curl http://example.com/foo?bar=spaced%20data"
と機能的に同等であろう
curl -G http://example.com/foo --data-urlencode "bar=spaced data"
を使用した場合。
私は文字列foo/bar
を持っています。文字列はfoo%2fbar
であり、URLに埋め込まれている必要があります。 (私はこのような何かを見つけることができれば)urlencode
機能のいくつかの種類が存在する場合
curl http://example.com/api/projects/foo%2fbar/events
一つの仮想的な解決策は、bashで前処理したデータをだろう。
DATA=foo/bar
ENCODED=`urlencode $DATA`
curl http://example.com/api/projects/${ENCODED}/events
別の仮想的な解決策(私はこのような何かを見つけることができれば)これに似たカールでいくつかのスイッチを、次のようになります。
curl http://example.com/api/projects/{0}/events --string-urlencode "0=foo/bar"
私はこの質問への答えを探しています具体的な理由Gitlab APIです。たとえば、gitlab get single projectNAMESPACE/PROJECT_NAME
はURLエンコードされます(例: /api/v3/projects/diaspora%2Fdiaspora
(/
は%2F
で表される)。これに加えて、プロジェクトの個々のプロパティをリクエストできるので、URLはhttp://example.com/projects/diaspora%2Fdiaspora/events
となります。
この質問はgitlab固有のものですが、一般的にはREST APIに一般的に当てはまると思います私はstackoverflowまたはインターネット検索で既存の答えを見つけることができません驚いた。
'urlencode $ DATA'は 'DATA = '*' '(ファイル名のリストをエンコードしてグロブを展開する)が悪い場合に動作します。 '' $ DATA ''にする必要があります。また、http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.htmlガイドラインre:変数名(第4段落)を参照してください。シェルツールとシステムツールは、操作に影響する変数に大文字の名前を使用します。少なくとも1つの小文字の名前は、アプリケーション用に予約されています。環境変数とシェル変数は名前空間を共有するため、これは通常の(エクスポートされていない)名前にも適用されます。 –
ご参考までに、Orwellophileの回答をhttp://japan.stackoverflow.com/a/10660730/14122の公式ではない質問に載せてみましたか? –
この質問にかなり近いと思われます:http://stackoverflow.com/questions/29755942/possible-to-urlencode-a-variable-in-a-shell-scriptには他にも、関数。 – swa66