2

ASP.NET WebAPI でリソースのハイパーリンクを生成するための確実なガイダンスはありますか? 私はこれに関するいくつかの投稿を読みました:

http://codebetter.com/glennblock/2012/01/08/hypermedia-and-web-api-design-brain-dump-and-samples/

http://blog.ploeh.dk/2012/04/17/HyperlinkingWithTheASPNETWebAPI.aspx

有益ではありますが、リソースへのリンクを実装する最善の方法 (つまり、サービス レイヤーで DTO を使用して実装されたオブジェクト モデル) に関して、マイクロソフトまたはその他からの具体的なガイダンスはないようです。真の RESTful サービスを実装するために WebAPI を使用する方向に進んでいる場合、ハイパーリンクは非常に重要であり、WebAPI にはこれに対する組み込みのサポート/ガイダンスが期待されていました。

これを実装しようとしている簡単な例は、Addresses のコレクションと SupportIncident のコレクションを持つ Contact エンティティを使用することです。私が参照した最初の記事に基づくクラス定義は、次のようになります。

 public class Link 
{         
    public Uri Uri { get; set; } 
    public string Rel { get; set; }
    public string Name { get; set; } 
}

public class ContactDTO
{
    public int ID { get; set; }

    public string Name { get; set; }

    public IList<AddressDTO> Addresses { get; set; }

    public IList<IncidentDTO> Incidents{ get; set; }

    public IList<Link> Links { get; set; }

}

WebAPI は、HTTP (xml/json) を介してこのモデルを公開し、リソースに対する GET/PUT/POST/DELETE アクションを公開するのに優れていますが、真の RESTful サービスを構築するために、a) リンクの固有のサポートがあるかどうかを知りたいです。 WEBAPIで生成?b) リソースへのリンクを含む上記のモデルを公開するための適切なガイダンスはありますか?また、クライアントがペイロードの一部としてリンクを送信する場合、API は PUT/POST をどのように処理する必要がありますか? これらは無視する必要がありますか?

4

2 に答える 2

1

私の意見では、ベン・フォスターはこれに関して素晴らしい仕事をしました。以下のブログ投稿を参照してください。

基本的な考え方は、メッセージ ハンドラを通過する途中でObjectContentのプロパティを変更するというものです。Valueこのメッセージ ハンドラーは、この作業を登録済みのいわゆる「レスポンス エンリッチャー」に委任し、それぞれがオブジェクト タイプをエンリッチできるかどうかを評価する機会があります。

于 2013-02-10T09:51:09.277 に答える