私があなたの質問を理解している限り、要求本文ではなく URL でキャリアのプロパティを直接渡すことができるようにしたいと考えています。
元:
[GET] http://localhost/entities?id=000000000000000
あなたのコントローラーメソッドはこれです
GetAllItems(Carrier carrier)
Carrier には Id (Guid) プロパティがあります。
class Carrier {
public Guid Id { get; set; }
public string Name { get; set; }
}
Carrier は、WebApi モデル バインディングに関して複雑なオブジェクトです。
モデル バインディングの既定の動作は次のとおりです。
既定では、Web API は次のルールを使用してパラメーターをバインドします。パラメーターが "単純な" 型の場合、Web API は URI から値を取得しようとします。単純型には、.NET プリミティブ型 (int、bool、double など)、TimeSpan、DateTime、Guid、decimal、string、および文字列から変換できる型コンバーターを持つ任意の型が含まれます。(型コンバーターについては後で詳しく説明します。) 複雑な型の場合、Web API は、メディア型フォーマッターを使用して、メッセージ本文から値を読み取ろうとします。
参照: http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api
URL で複雑なオブジェクトを使用したモデル バインディングを想定することは、WebApi の既定の動作ではありません。
コントローラー メソッドで URL から複雑なオブジェクトをモデル バインドする場合は、それを伝える必要があります。
GetAllItems([FromUri] Carrier carrier)
FromUri バインディング インジケーターを使用すると、URL から複雑なモデル バインディングを使用できます。
URL にさらに多くのプロパティ マッピングを追加できるようになりました。
[GET] http://localhost/entities?id=000000000000000&name=ABC
GetAllItems は、carrier.Id = 0000-00000000000-000; が入力された Carrier オブジェクトを受け取ります。Carrier.Name = "ABC"