背景:
我正在尝试使用dotNet core 3.0实现Web API,以便它可以接受JSON数据的POST版本。
我已经实现了这一点,但是还有一个额外的复杂性:发布JSON数据的系统通过出现在查询字符串上的API密钥提供身份验证。 (实际上-它提供了三个查询字符串值:前两个值的api密钥,时间戳和基于共享密钥的MAC哈希。)
(我希望它以X-Api-Key值的形式出现在HTTP标头中,因为我以前已经通过此方法实现了安全性-但我没有选择)
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有效负载?