2017-08-24 65 views
0

請幫助下面。如何將元數據添加到Web Api響應

  1. 我需要返回API響應爲IEnumerable類型的JSON響應,我需要我自己的JSON屬性附加到這個返回對象的響應一起。

    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的屬性附加產品名稱和產品編號。

+0

您遇到什麼問題會阻止您提出的更改? – Jasen

+0

如何通過附加產品名稱和產品達到預期的響應 – user1926521

+0

您提出的更改不再是可枚舉的,而是包含一些屬性和IEnumerable的新型模型。維護IEnumerable結果的一種方法是爲每個'items'添加'ProductName'和'ProductId'。 – Jasen

回答

0

您應該包含Dto.Funds新模式,ProductIdProductName, 財產以後這樣的:

public class NewModelToReturn{ 

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

} 

順便說一句,我也鼓勵您閱讀本礦博客張貼有關設計ASP.NET網頁API回覆以瞭解更多關於返回一致的Web Api響應(成功和失敗響應):https://www.vladopandzic.com/asp-net-web-api/building-consistent-responses-asp-net-web-api/

相關問題