2017-08-24 3 views
0

下記の支援をお願いします。Web APIにメタデータを追加する方法

  1. 私は私がこの戻りオブジェクトに私自身のJSONプロパティを追加する必要があります応答と一緒に、タイプのIEnumerableのJSONレスポンスとしてAPIレスポンスを返す必要があります。

    private async Task<IEnumerable<Funds>> GetFundDetails(int productid) 
    { 
        var action = $"productfunds/{productid}/detail"; 
        var res = await HttpClient.GetAsync($"{BaseResource}{action}"); 
        res.EnsureSuccessStatusCode(); 
        var collection = await res.Content.ReadAsAsync<Dto.FundDetail>(); 
        var items = (collection.Funds ?? Enumerable.Empty<Dto.Funds>()).Select<Dto.FundDetail, FundAsset>(MapFunds); 
        return items; 
    } 
    

応答:

{ 
"items": [ 
    { 
    "fundId": "036", 
    "fundName": "ABC Fund", 
    "amount": 1248111.26 
}, 
{ 
    "fundId": "037", 
    "fundName": "XYZ Fund", 
    "amount": 7858564.84 
} 
] 
} 

予想される応答:

{ 
    "items": [ 
    { 
     "fundId": "036", 
     "fundName": "ABC Fund", 
     "amount": 1248111.26 
    }, 
    { 
     "fundId": "037", 
     "fundName": "XYZ Fund", 
     "amount": 7858564.84 
    } 
    ], 
    ProductName: "PQR Product" 
    ProductId: "1001" 
} 

- >私はDto.FundDetailのプロパティであるコレクションオブジェクトから商品名とのProductIdを追加する必要があります。

+0

どのような問題が発生しましたか? – Jasen

+0

上記のように期待通りの応答を得るには、productnameとproductidを追加してください。 – user1926521

+0

提案された変更は、もはや列挙可能ではなく、いくつかのプロパティとIEnumerableを含む新しい種類のモデルです。 IEnumerable結果を維持する1つの方法は、 'Items'のそれぞれに' ProductName'と 'ProductId'を追加することです。 – Jasen

答えて

0
あなたは Dto.Fundsを含む新しいモデルを作る必要があり

、およびProductId、およびProductName、このような 気にいら:ところで

public class NewModelToReturn{ 

    public List<Dto.Funds> Funds{get;set;} 
    public string ProductName; 
    public string ProductId; 

} 

は、私はまた、ASP.NETのWeb APIを設計については、この鉱山のブログの記事を読むことをお勧めします一貫性のあるWeb API応答の返信の詳細については、https://www.vladopandzic.com/asp-net-web-api/building-consistent-responses-asp-net-web-api/

関連する問題