単一の DTO でフィールドのサブセットを返す方法の 1 つは、DTO のオプション プロパティに null 許容型を設定することです。
[DataContract]
public class Dude
{
[DataMember]
public int Id { get; set; }
[DataMember(EmitDefaultValue = false)]
public string FirstName { get; set; }
[DataMember(EmitDefaultValue = false)]
public string MiddleName { get; set; }
[DataMember(EmitDefaultValue = false)]
public string LastName { get; set; }
[DataMember(EmitDefaultValue = false)]
public int? IQ { get; set; }
}
このように、クライアントが応答で確認することに関心を持つフィールドのリストを取得し、返される DTO のインスタンスにそれらのみを入力する必要があります。
return new Dude() { Id = 123, FirstName = "Johnny" };
のような JSON が送信されます{ "Id":123, "FirstName":"Johnny" }
。別のクライアントが sayLastName
を要求すると、返さnew Dude() { Id = 123, LastName = "Bravo" };
れ、JSON は になります{ "Id":123, "LastName":"Bravo" }
。
これは、XML と JSON の両方で機能します。JSON のみで問題ない場合は、属性を適用する必要はありません。null を無視するように JSON.NET に指示するだけです。
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
};
フィールドのリストを取得する方法の最後の部分は、API の設計次第です。おそらく、アクション フィルターを使用して要求からこれらの標準フィールドを取得し、それを使用して永続ストアからデータを取得できます。