2

私たちが開発しようとしている API の Layer3/HATEOS/RESTful/HAL 全体を調査しています。

これらすべてのリンクによって肥大化する可能性のあるデータのリストを公開します。リンクをテンプレート化するのはアイデアではありませんか?これは何と呼ばれますか? それについての言及が見つからないようです。それが良いアプローチではない場合、なぜですか?

仮想の休日検索 API を例にとると、エントリ ポイントは目的地と出発空港のリストを提供し、ユーザーはどちらか一方を使用して検索を開始できます。

次のようなものは、より効率的なアプローチでしょうか? (大まかに HAL に基づく) そして、そうでない場合はなぜですか?

{
"_links": {
    "self": {
        "href": "/"
    },
    "_templates": {
        "airport": {
            "self": { "href": "/airport/{IATA}" },
            "destinations": { "href": "destinations?airport={IATA}" },
            "parking": { "href": "/airport/{IATA}/parking"  },
            "hotels": { "href": "/hotels?airport={IATA}" },
            "directions": { "href": "/guides?airport={IATA}" },
            "search": [
                { "href": "/search?airport={IATA} title": "default" },
                { "href": "/search?airport={IATA}&type=CITY title": "citybreak" },
                { "href": "/search?airport={IATA}&type=LOW titel": "lowcost" }
            ]
        },
        "country": { 
            "self": { "href": "/destinations/{Code}/" },
            "regions": { "href": "/destinations/{Code}/regions" },
            "resorts": { "href": "/destinations/{Code}/resorts" },
            "airports": { "href": "/destinations/{Code}/airorts" },
            "search": { "href": "/search?country={Code}&region=ANY&resort=ANY" }
        }
    }
},
"_embedded": {
    "airport": [
        { "IATA": "LHR Name": "London Heathrow Airport" },
        { "IATA": "EMA Name": "East Midlands Airport" },
        { "IATA": "NWI Name": "Norwich International Airport" },
        { "IATA": "LTN Name": "London Luton Airport" },
        { "IATA": "STN Name": "London Stansted Airport" },
        { "IATA": "LCY Name": "London City Airport" },
        { "IATA": "LPL Name": "Liverpool John Lennon Airport" },
        { "IATA": "MAN Name": "Manchester Airport" },
        { "IATA": "LGW Name": "Gatwick Airport" }
    ],
    "country": [
        { "Code": "CY Name": "Cyprus" },
        { "Code": "CZ Name": "Czech Republic" },
        { "Code": "ES Name": "Spain" },
        { "Code": "FO Name": "Faroe Islands" },
        { "Code": "GG Name": "Guernsey" },
        { "Code": "GR Name": "Greece" }
    ]
}

}

4

1 に答える 1

1

これは時期尚早の最適化のように感じます。クライアント処理の複雑さのためにペイロード サイズを犠牲にすることは絶対にありません。

このより「効率的なアプローチ」の利点を実際に測定しましたか? 私の推測では、このアプローチはすべてを送信するよりも遅くなるでしょう!

于 2013-09-26T13:05:41.710 に答える