IntelliJ IDEA 2017.3(今はEAP)から追加されたeditor-based REST clientを試してみたよ。
詳しくは、What’s New in IntelliJ IDEA 2017.3 EAP? | IntelliJ IDEA BlogのToolsに書かれてるよ。
試すために作ったサーバ側のコード
GETとPOSTを確認するためだけの簡単な実装で・・・
@RestController
@RequestMapping("/api")
class Api {
data class Data(val value: String)
@GetMapping
fun get(@RequestHeader("X-Hoge") hoge: String): Data = Data("X-Hogeは $hoge でした")
@PostMapping
fun post(@RequestBody data: Data): ResponseEntity<Unit> {
val httpHeaders = HttpHeaders()
httpHeaders["x-hoge"] = listOf(data.toString())
return ResponseEntity(httpHeaders, HttpStatus.OK)
}
}
getを試す
拡張子がhttpだと、editor-based REST clientとして認識されるので、適当なところに拡張子がhttpのファイルを作ってあげる。
プロジェクト配下に置く必要がなければ、blogにあるようにScratch Fileとして作ってあげればよいのかなと。
ファイルの中身はこんな感じにする。
### get
# GETのあとにスペースを開けてURLを指定する。
# HTTP Headerは次の行から列挙する。
GET http://localhost:8080/api
X-Hoge: aaaa
こんな感じに補完もできるので割と良い感じ。
実行はエディタの横に表示されている実行アイコンから行うと。
実行結果は、Run Windowに表示されると。
レスポンスボディの内容は、プロジェクトの.idea/httpRequestsの下に自動的に保存されるから、あとから参照もできる。
繰り返し実行した場合、大量に保存されそうだから自分で消さないとダメなのかなー。。。
postを試す
getと同じように拡張子がhttpなファイルを作る。
こんな感じにヘッダーの後に空行いれて送信するボディを定義すると
POST http://localhost:8080/api
Content-Type: application/json
{
"value": "fuga"
}
こんな感じにファイルに定義した内容をボディを送るれるみたい。
指定するファイルのパスは相対パスの場合はプロジェクト直下から。
POST http://localhost:8080/api
Content-Type: application/json
< ./input/input.json
実行方法や、結果の参照はgetと同じ感じ。
GUIのREST Clientより繰り返し実行するのは便利かも?
おわり。