HTTP 経由で n+ クライアントが使用する RESTful API を作成しています。
ユーザー <= フレンドシップ => フレンド 多対多の関係がある場合、ユーザーのフレンドシップを削除するには、最初に GET friends#index をクエリしてフレンドシップの ID を取得する必要があります。 DELETE を実行してから DELETE リクエストを発行しますか?
GET /friendships?user_id=123&friend_id=456
=> {id:"999",user_id:"123",friend_id:"456"}
DELETE /friendships/999
=> "Friendship deleted"
ユーザーがフレンドシップを削除するには、アプリケーションでフレンドシップの「ID」を使用できるようにする必要がありますが、ユーザーが削除するフレンドを知るには、フレンドの「名前」を確認する必要があります。
言い換えれば、同じ HTTP リクエストで Friend モデルの配列とそれぞれの Friendship モデルの配列を要求する RESTful な方法はありますか?
以下は私の現在の設定です:
# Models
class User < ActiveRecord::Base
has_many :friendships, :dependent => :destroy
has_many :friends, :through => :friendships
# disregard inverse for now
end
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => "User"
validates_uniqueness_of :user_id, :scope => :friend_id
end
# Tables
create_table :users do |t|
t.string :name
t.timestamps
end
create_table :friendships do |t|
t.integer :user_id, :null => false
t.integer :friend_id, :null => false
t.integer :status, :null => false, :default => 0
t.timestamps
end
# routes.rb
resources :friendships, :only => [:create, :destroy, :index]
resources :users do
member do
get :friends # index-like action returning array of friends
end
end
...そしてはい、私は何日も探していました:)
私は Rails を使用していますが、この質問は任意のフレームワークを表しています。はい、「やり遂げる」方法が無数にあることは知っていますが、I/O をあまりカスタマイズしなくてもクライアント側のフレームワークを使用できるように、これを行うための RESTful な方法を探しています。 .