REST API と HTTP METHOD †
- 決まってないけど、伝統的にこういう使い分けでやるみたい
Entity操作 | HTTPメソッド |
Create | POST |
Read | GET |
Update | PUT |
Delete | DELETE |
- なかなか REST API を Entity操作に落とし込めないんで、そういう場合は何でも POST というのももちろんあり
Curl で POST JSON †
-新しい app を登録
$ curl -H 'Content-Type:application/json' -d "{\"name\":\"myapp\"}" http://localhost:8080/api/app | jq
{
"id": 1,
"version": "20200212",
"branchNo": 0,
"name": "myapp",
"enabled": false,
"lastupdate": 1581440955809,
"containedBy": []
}
Curl で PUT JSON †
- app#1 の enabled を true に変更する
- ミソは、true を "" で囲っていないところ。Jersey が boolean に変換してくれる。cf. Glassfish JAX-RS Mapをインタフェースにした安直な REST-API
$ curl -X PUT -H 'Content-Type:application/json' -d "{\"enabled\":true}" http://localhost:8080/api/app/1 | jq
{
"id": 1,
"version": "20200212",
"branchNo": 0,
"name": "myapp",
"enabled": true,
"lastupdate": 1581441066264,
"containedBy": []
}
Curl で GET JSON †
- 検索の前に、新しいバージョンの myapp を登録する。ただし enabled=false 状態
- myapp の(有効 enabled=true な)最新バージョンの取得
$ curl http://localhost:8080/api/app/findByName/myapp | jq
[
{
"id": 1,
"version": "20200212",
"branchNo": 0,
"name": "myapp",
"enabled": true,
"lastupdate": 1581441066264,
"containedBy": []
}
]
- 全検索
$ curl http://localhost:8080/api/app/findAll | jq
[
{
"id": 2,
"version": "20200212",
"branchNo": 1,
"name": "myapp",
"enabled": false,
"lastupdate": 1581441590281,
"containedBy": []
},
{
"id": 1,
"version": "20200212",
"branchNo": 0,
"name": "myapp",
"enabled": true,
"lastupdate": 1581441066264,
"containedBy": []
}
]
Curl で DELETE †
$ curl -X DELETE http://localhost:8080/api/app/2
$ curl http://localhost:8080/api/app/findAll | jq
[
{
"id": 1,
"version": "20200212",
"branchNo": 0,
"name": "myapp",
"enabled": true,
"lastupdate": 1581441066264,
"containedBy": []
}
]
Bash で JSON を読み取る †
Java#Jetty