cURLからJavaへ
curlコマンドを貼り付けると、JDKだけでコンパイルできるJava 11のHttpClientコードが得られます。
cURLからJavaへは完全にブラウザ内で動作します。貼り付けたコマンドはトークンごと端末上で変換され、送信されません。
cURLからC#へを開く
cURLからJavaへ について
Javaはバージョン11でようやくまともなHTTPクライアントを手に入れ、curlコマンドを再現するためだけにOkHttpやApacheを持ち出す理由がなくなりました。ビルダーは素直ですが決まりがあります。GETとDELETEはボディを取らず、POSTとPUTは取り、PATCHを含むそれ以外の動詞は汎用の呼び出しを使います。ここを誤るとコンパイルが通らないか、ボディが黙って捨てられます。このツールはcurlのフラグを読み、その決まりに沿ったコードを必要なimportとともに出力し、-uも正しく符号化します。
機能
- JDKだけでコンパイルできるjava.net.httpのコードを出力
- 動詞ごとに正しいビルダー呼び出し(PATCHを含む)
- ボディ付きDELETEは自動的に汎用形式へ切り替え
- BodyPublishers.ofStringで正しくエスケープしたボディ
- Basic認証はjava.util.Base64で生成
- リクエストが使う分だけimportを追加
cURLからJavaへ の使い方
- ヘッダーとボディを含むcurlコマンドを貼り付けます
- 入力に合わせて生成されるJavaを読みます
- コピーするか、Main.javaとして保存します
- JDK 11以降であればそのままコンパイルできます
例
入力
curl -X PATCH https://api.example.com/users/1 -d '{"role":"admin"}'
出力
.method("PATCH", HttpRequest.BodyPublishers.ofString("{\"role\":\"admin\"}"))
ビルダーにPATCHの近道はないのでmethod()を使います。手作業の移植で見落とされがちな点です。
よくあるエラーとトラブルシューティング
- ビルダーに.PATCH()がない。 — そのとおりです。近道はGET、POST、PUT、DELETEだけで、他はmethod(名前, publisher)を使います。
- ボディ付きDELETEでデータが消える。 — DELETE()はpublisherを取らないためです。データがある場合、この変換はmethod("DELETE", …)に切り替えます。
よくある質問
- curlをJavaに変換するには。
- 上にコマンドを貼り付けてください。メソッド、URL、ヘッダー、ボディが適切な呼び出しのjava.net.httpリクエストになります。
- 生成コードに依存関係は必要ですか。
- 不要です。Java 11以降のJDKに含まれるjava.net.httpを使うので、クラスパスに何もなくてもコンパイルできます。
- JavaでPATCHリクエストを送るには。
- 汎用の呼び出しを使います。.method("PATCH", HttpRequest.BodyPublishers.ofString(body))です。専用の近道はありません。
- 変換時にリクエストは送信されますか。
- いいえ。このツールはテキストを書き換えるだけで、実行はせず、変換はブラウザ内で行われます。
関連ツール
すべての ArrayKit ツール