cURL – JSONデータをSpring RESTにポストする
この記事では、JSONデータをSpring REST APIにPOSTするために `cURL`コマンドを使用する方法を説明します。
1. Spring REST
ログインを検証するための簡単なSpring REST API
LoginController.java
package com.mkyong.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.** ; @Controller public class LoginController { private final Logger logger = LoggerFactory.getLogger(LoginController.class); @PostMapping("/api/login") public ResponseEntity<?> login(@RequestBody Login login) { logger.debug("login : {}", login); //validate login here return new ResponseEntity("Successfully login", new HttpHeaders(), HttpStatus.OK); } }
Login.java
package com.mkyong.controller; public class Login { String username; String password; //getters and setters }
2. cURL投稿JSON
上記のREST APIをテストするには、 `cURL`コマンドを使用してJSONデータを次のようにポストすることができます:
2.1 Windowsでは、二重引用符をエスケープする必要があります
ターミナル
c:\> curl -H "Content-Type: application/json" -X POST -d {\"username\":\"mkyong\",\"password\":\"abc\"} http://localhost:8080/api/login/Successfully login
2.2 ** nixまたはMac OSXの場合は、次のように一重引用符を追加します。
ターミナル
$ curl -H "Content-Type: application/json" -X POST -d '{"username":"mkyong","password":"abc"}' http://localhost:8080/api/login/Successfully login
2.3
--help
ターミナル
$ curl --help ... -d HTTP POSTデータ -HカスタムヘッダーLINEをサーバーに渡します。 -X使用するリクエストコマンドを指定する
2.4 `curl -v`で詳細を表示する
ターミナル
c:\> curl -v -H "Content-Type:application/json" -X POST -d {\ "username \":\ "mkyong \"、\ "password \":\ "abc \"} http://localhost:8080/api/login/注:-Xまたは--requestの不要な使用は、POSTが既に推測されています。 ** 名前検索のタイムアウトはサポートされていません ** 試してみる:1 ... ** TCP__NODELAYが設定されています ** localhost(:: 1)ポート8080(#0)に接続 > POST/api/login/HTTP/1.1 >ホスト:localhost:8080 >ユーザーエージェント:curl/7.52.1 >受け入れ:** /** >コンテンツタイプ:application/json >コンテンツの長さ:38 > ** 完全に送信されたアップロード:38バイトのうち38バイト <HTTP/1.1 200 <Content-Type:text/plain; charset = UTF-8 <コンテンツの長さ:18 <日付:木、2017年1月26日08:00:03 GMT < ** Curl__http__done:premature == 0と呼ばれるログインに成功しました。 ** 接続#0はホストlocalhostをそのまま残す