簡體   English   中英

如何在ASP.net Web API中使用詳細參數隱藏/顯示結果JSON

[英]How to hide/show the result JSON using verbose parameter in ASP.net Web API

我已經編寫了ASP.Net Web API,我需要根據參數( 即verbose = true )顯示完整/某些結果JSON

解釋此要求。

我當前的JSON是

沒有冗長

GET方法:

api / v1 / Patient?Key = 1

{
    "user": {           
            "key": 1,
            "suffix": "1",
            "firstName": "Dhanu",
            "lastName": "Kumar",
            "middleName": "",
            "address": {
                "address1": "uuu",
                "address2": "TTT",
                "address3": "xx",
                "city": "yy"           
            }
        }
}

冗長

api / v1 / patient?Key = 1&verbose = true

{
    "user": {           
            "key": 1,
            "firstName": "Dhanu",
            "lastName": "Kumar",
            "middleName": ""
        }
}

我的User.cs

public UserDTO()
{
    public int Key { get; set; }
    public string Suffix { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string MiddleName { get; set; }
    public Address Address {get;set;}       
}

基於詳細參數,我將隱藏/顯示JSON中的某些字段。

有什么辦法可以做到這一點?

您可以使用繼承

public class UserDTO {
    public int Key { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string MiddleName { get; set; }    
}

public class VerboseUserDTO: UserDTO {
    public string Suffix { get; set; }
    public Address Address {get;set;}       
}

並讓端點根據提供的參數返回類型。

//api/v1/patient
public IHttpActionResult Get(int key, bool verbose = false) {
    //...get data based on key

    if(data == nul)
        return NotFound();

    if(verbose) {
        var verboseDto = new { 
            user = new VerboseUserDTO {
                //...populated from data
            }
        };
        return Ok(verboseDto);
    }

    var dto = new { 
        user =  new UserDTO {
            //...populated from data    
        }
    };    
    return Ok(dto);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM