3

RESTful サービスを設計しています。一連のデータをリストすることです。主な問題は、セットに合理的な単一の識別子がないことです。また、特定のセットをシステムの知識内で簡単に計算することもできません。その結果、GET /items/{identifier} サービスを持つことはできないようです。

リクエストされている各要素のIDを持っています。私の主な問題は、URI に ID をリストすることが RESTful に見えないことです (例: GET items/{id1},{id2},...,{idn} )。右?

DELETE にも同様のユース ケースがあり、1 回のリクエスト サイクルで複数のアイテムを削除することがわかりました。

REST領域内にとどまりながら、そのようなユースケースはどのように満たされるのでしょうか? それは可能ですか?

4

1 に答える 1

0

質問で述べられているアプローチは、実際には、の組み合わせごとにidsリソースがあることを意味します。ids2 : 1 と 2があるとしましょう。

/items/1,2

/items/2,1

上記は異なるリソースを表していますが、結果は同じです。これは、API の利用者にとって混乱を招く可能性があります。

これをモデル化する別の方法は、フィルタリング セマンティクスとしてクエリ パラメータを使用することです。idが実際にはリソースのフィールドであると仮定しましょう。

item例、1ずつ取得id:

GET
/items/1

Response:

{
    "id": 1,
    "type": "table",
    "color": "black",
    ...
}

問題は、複数のアイテムをまとめて入手する必要がある場合はどうすればよいかということです。itemsこの質問は、特定のフィールドの値によるフィルタリングの一般的な質問に一般化できます。items例:型テーブルのすべてを取得する

GET
/items?query="name='table'"

Response:
{
    "data": [
        {
            "id": 1,
            "type": "table",
            "color": "black",
            ... 
        },
        {
            "id": 2,
            "type": "table",
            "color": "grey",
            ... 
        },
        {
            "id": 6,
            "type": "table",
            "color": "brown",
            ... 
        }
    ]
}

itemsそのため、 がどこにidある1かを取得するために同じ質問をすることができます2or演算を次||の構文のようにモデル化するとします。query

GET
/items?query="id=1||id=2"

Response:
{
    "data": [
        {
            "id": 1,
            "type": "table",
            "color": "black",
            ... 
        },
        {
            "id": 2,
            "type": "table",
            "color": "grey",
            ... 
        }
    ]
}
于 2015-04-04T14:00:36.633 に答える