0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

サービス API とリソース API の違い

Posted at

上司に、とある機能ついてはサービスを作らずにリソース API で処理するのが良さそうじゃない?という風に言われた。

ちょっといまいちピンとこなかったので少し調べてみました。

APIって?

httpプロトコルを利用してネットワーク越しに呼び出す API のこと
つまり、機能は分かっているけれども、その中身は詳しくは分からないものを外部から呼び出すための仕様のことを指します。

プロトコルとして http を使うためそのエンドポイントは URI によって指定されることになる。

REST設計の具体例

具体的に実装を行うとしてSymfonyで実装するとして、まずしなければならないのはエンティティとエンドポイント(URI)です。

エンティティを定義したら次にエンドポイントの URI を決定する。RESTではリソース(エンティティの形をしたデータ)のURI が一意になるように決定していく。

サービスとは

複数のリソース(エンティティ)から加工して新たなリソースを生成する。

サービスはビジネスロジックなどの処理をまとめたものでありデータではない。
サービスは複数のリソースを参照し何らかの処理を実行して新たにリソースを生成するがあくまで動的に結果を返す処理に主眼がある。

本来的な作り方を意識するのであれば、サービス(処理の塊)をリソースに無理やりマッピングしようとして、何がしたいのかよく分からなくなってしまう。
サービスの URI がリソースっぽくないことで悩んだりすることもあるのでしょうか。。。
ただし本来的にはAPI を利用する人にとって分かりやすいI/F設計にすべきだということ。

これを解決するために今の会社では、リソースを返す純粋な rest API とサービス API の二つを持つ。

参考文献
 WebAPIではリソースとサービスの区別が重要

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?