Справочная информация:
Я пытаюсь реализовать веб-API с использованием dotNet core 3.0, чтобы он принимал POST-редактируемые данные JSON.
Я достиг этого, но есть дополнительная сложность: система, которая отправляет данные JSON, обеспечивает аутентификацию через ключ API, который появляется в строке запроса. (На самом деле - он предоставляет 3 значения строки запроса: ключ API, временную метку и MAC-хэш, основанный на общем секрете, первых двух значений.)
(я бы предпочел, чтобы оно появилось в HTTPзаголовок как значение X-Api-Key, так как ранее я реализовал защиту с помощью этого метода - но у меня нет выбора)
Данные JSON на самом деле представляют собой список объектов одного типа, поэтомупривязка к методу контроллера выглядит следующим образом:
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public IActionResult AddMyStuffBatches(List<MyStuffBatch> batches)
Значения аутентификации, отображаемые в строке запроса, на самом деле не имеют ничего общего с моделью - они не связаны с данными, загруженными процессом. Поэтому как таковые они не должны появляться в списке batches
или как свойство определенного экземпляра MyStuffBatch
.
Поэтому вопрос: Как проектировать контроллеркоторая имеет дело с деталями ключа API аутентификации, переданными в строке запроса, в то время как (при условии, что передан действительный ключ API и т. д.) все еще обрабатывается полезная нагрузка JSON, как и раньше?