S2REST
S2RESTで呼び出されるのは、Serviceクラスです。serviceパッケージに入っていれば、呼び出せるようにしようかなと思っています。Serviceクラスの名前は、リソース名 + Serviceになります。クライアントは、/リソース名/で呼び出します。
HTTPのメソッドとServiceクラスのメソッドの関係は次のようになります。
HTTP | Service |
---|---|
GET | get |
POST | create |
PUT | update |
DELETE | delete |
は、まぁいいかなと思いますが、条件付検索が難しいですね。
GET /リソース名/?パラメータ1=値1&パラメータ2=値2だったら、パラメータ1,パラメータ2をプロパティに持つDTOにマッピングする感じかな。XxxService#get(XxxServiceGetDto dto)
同じに見えるリソースでも表現が異なる場合があります。例えば、従業員のデータを返す場合と、従業員+部署のデータを返すようなケースです。このような場合は、
GET /emp/withDept/
をEmpService#getWithDept()にマッピングすればよいのかなと考えています。
HTMLのクライアントとサービスを区別するためにGET /service/リソース名/にしたほうが良いかも。なぜなら、http://.../ユースケース名/xxx.htmlなどと区別するため。
戻り値の形式は、Acceptヘッダによって切り替える予定ですが、デフォルトは、Atomになると思います。