В. NET Core 3 веб-API я хочу сериализовать объект со многими свойствами. В зависимости от разрешений вызывающего, я хочу показать или скрыть указанные c свойства. Сейчас я работаю исключительно с атрибутом [JsonIgnore]
. Это хорошо для свойств, которые вы обычно не хотите сериализовать.
Но есть ли что-то похожее на [JsonIgnore(context => context.CheckUserPermissions())]
? Или, может быть, что-то, что я могу добавить в свой метод API?
Мой текущий код довольно прост:
[HttpGet("PickingZoneLists/{pickingZone}")]
public async Task<ActionResult<PickingListEntry[]>> GetData(string pickingZone) {
// Get data
dsyWorkOrder[] workOrders;
try {
workOrders = await GetPickingDocList(pickingZone);
} catch (Exception ex) {
return Problem("Data could not be gathered. " + ex.Message);
}
// Validate result
if (workOrders == null)
return Problem("Service returned invalid data.");
if (workOrders.Length == 0)
return NotFound();
// Transform data
PickingListEntry[] result;
try {
result = PickingListEntry.FromServiceResponse(workOrders).ToArray();
} catch (Exception ex) {
return Problem("Data could not be transformed. " + ex.Message);
}
// Maybe apply the filters to PickingListEntry here <-------------------
// Create response object and return
return Ok(result);
}