しおしお

IntelliJのあれやこれや

IntelliJ IDEA 2017.3 EAPからのeditor-based REST clientを試す

IntelliJ IDEA 2017.3(今はEAP)から追加されたeditor-based REST clientを試してみたよ。
詳しくは、What’s New in IntelliJ IDEA 2017.3 EAP? | IntelliJ IDEA BlogToolsに書かれてるよ。

試すために作ったサーバ側のコード

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

こんな感じに補完もできるので割と良い感じ。
f:id:sioiri:20170916171909g:plain

実行はエディタの横に表示されている実行アイコンから行うと。
f:id:sioiri:20170916170331p:plain

実行結果は、Run Windowに表示されると。
レスポンスボディの内容は、プロジェクトの.idea/httpRequestsの下に自動的に保存されるから、あとから参照もできる。
繰り返し実行した場合、大量に保存されそうだから自分で消さないとダメなのかなー。。。
f:id:sioiri:20170916170603p:plain

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より繰り返し実行するのは便利かも?

おわり。