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をそのまま残す