フェザーフレームワークはRESTデザインに固執するように設計されていますが、ルールを少し破る価値があると私は思っています。私はHTTPとSocket.ioを介してプレーヤーコントロールにプログラム的にアクセスできる音楽プレーヤーAPIを作りたいと思っています。フェザーのカスタムサービスメソッド - ルールとの比較
プレイヤーは、しかし、get
、put
、patch
、post
、およびdelete
の単純なケースではありません。 1人のプレイヤーがすべてのユーザーに対して作成され、削除されることはなく、変更されるだけです。メソッドのサブルートにplay、pause、setQueueなどのカスタムメソッドが必要です(たとえば、PATCH /player/play
およびPATCH /player/pause
)。
これはまさにhow Spotify does it in their APIであり、それはすなわち、同じエンドポイントに毎回PATCH
要求を送信し、手動でプレーヤーのデータを更新するよりもはるかに理にかなっています。 PATCH /player {nowPlaying: {index: newIndex}}
を次のトラックにスキップします。ここで、APIのユーザーはプレーヤーデータのスキーマとその操作方法を知る必要があります。代わりに、PATCH /player/next
のようなものがはるかに理にかなって使いやすくなります。
私はどのようにこのようなサービスを実装するのですか?それが不可能な場合は、カスタムエクスプレスコードを他のアプリとうまく統合する最もフレンドリーな方法は何ですか?