#c# #json #api
Вопрос:
Допустим, у меня есть модель, которую я буду возвращать из конечной точки:
public class Employee
{
public string Name { get; set; }
public string Title { get; set; }
public decimal Salary { get; set; }
}
Как мне сделать так, чтобы, основываясь на некоторых критериях ключа API, я мог показывать или не показывать зарплату?
[HttpGet]
public async Task<HttpResponseMessage> GetEmployee(int id)
{
if (permissions["api_key"].isAdmin = true) {
//include Salary
return Request.CreateResponse(HttpStatusCode.OK, await Employees.getEmployee(id));
} else {
//don't include salary
return Request.CreateResponse(HttpStatusCode.OK, await Employees.getEmployee(id));
}
}
Ответ №1:
а) Добавить параметр и позвонить Employees.getEmployee(id, isAdmin)
и заполнить зарплату только в том случае, если(isAdmin)?
б) Добавить в класс сотрудника public bool ShouldSerializeSalary() => Salary!=0;
(или другую логику), см.
Комментарии:
1. Существует более 1 флага, isAdmin-только один из них. Я бы сильно перегружал себя
2. Вы можете использовать два разных DTO и сопоставить их с вашей моделью с помощью инструмента, такого как Automapper, чтобы отобразить только те свойства, которые вы хотите отобразить, основываясь на ключе API или флагах isAdmin.