Как скрыть / показать результат JSON с использованием подробного параметра в ASP.net Web API - PullRequest
0 голосов
/ 22 мая 2018

Я написал веб-API ASP.Net, мое требование показывать полный / некоторый результат (ы) JSON на основе параметра , т. Е. Verbose = true

Объяснитьэто требования.

Мой текущий JSON:

Без подробностей

GET Метод:

API / V1 / пациент? Ключ = 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": ""
        }
}

My 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.

Есть ли способ достичь этого?

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете использовать наследование

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...