2

一般にRESTAPI、特にRailsで外部IDを操作するためのベストプラクティスは何ですか?


いくつかの背景:

アプリケーション用のAPIを作成しました。これは、標準のリソースベースのJSONRESTAPIを使用します。

ユーザーが/api/flightsにPOSTしてモデルオブジェクトを作成するFlightモデルがあります。これにより、ActiveRecordが常に行う方法で、新しいFlightオブジェクトに一意のIDが割り当てられます。

これまでのところかなり標準的です。

ただし、顧客は、APIでのFlightオブジェクトの作成の一部として自分でIDを割り当て、後でオブジェクトを表示/更新/削除(など)するために割り当てたIDを使用するオプションを提供することを望んでいます。 APIによる。

external_idパラメーターを追加し、external_idによって更新/削除/インデックス作成するルートを追加するだけでよいと思います。ただし、これは、エレガントなリソースベースのレールアプローチを混乱させるようです。

それで、ベストプラクティスは何ですか?

4

2 に答える 2

2

これでいいと思います。もう1つの同様のケースは、親しみの少ないIDを置き換えるURLの「スラッグ」または「親しみやすいURL」を作成することです(「augments」は、置き換えるよりも優れた単語です)。が不変で、スコープ内で一意であり、URLセーフである限りexternal_id、IDと同等です。ただし、これは外部値であるため、不変であることをクライアントに確認する必要があります。値を変更することは可能ですが、値の変更を処理するには多くの作業が必要です(特に、URLの一部である場合)。

Railsのfindメソッドを置き換えてexternal_idを使用する場合は、を使用method_missingしてidを再定義します。「rails3slugmethod_missing」などをグーグルで検索することでこの例があります。

于 2012-11-28T16:52:37.983 に答える
1

これが役立つかどうかはわかりませんが、gemフレンドリIDを確認して、このgemにexternal_idを指定すると、リクエストを処理できます。

http://example.com/states/4323454

のように

http://example.com/states/washington
于 2013-11-22T17:46:02.463 に答える