API不接受对象列表作为参数.Net Core webAPI

Posted

技术标签:

【中文标题】API不接受对象列表作为参数.Net Core webAPI【英文标题】:API not accepting List of objects as a parameter .Net Core webAPI 【发布时间】:2021-05-25 17:44:33 【问题描述】:

我正在开发一个接受对象列表作为参数的 API。 这是我正在使用的 Api:

[HttpPost("PharmacySupply")]
        public async Task<List<PharmacyMedicineSupply>> GetPharmacySupply(List<MedicineDemand> medDemand)
        
            SupplyRepo sr = new SupplyRepo();
            return await sr.GetPharmacySupply(medDemand);
        

这是我的模型:

public class MedicineDemand
    
        public string Medicine  get; set; 
        public int DemandCount  get; set; 
    

我将这个作为参数大摇大摆地传递:

[
Dolo,7,
Cholecalciferol,9,
Orthoherb,5,
Gaviscon,2,
Hilact,3
Cyclopam,1
]

但参数为空。调试时显示计数为 0。 我做错了什么?

【问题讨论】:

【参考方案1】:

如果您使用邮递员进行测试,请尝试添加[FromBody]。 (See [FromBody] documentation here)

 public async Task<List<PharmacyMedicineSupply>> GetPharmacySupply([FromBody] List<MedicineDemand> medDemand)

为了在邮递员中进行测试,您必须使用

[
    "Medicine": "Dolo", "DemandCount" : 7,
    "Medicine": "Cholecalciferol", "DemandCount" : 9,
   ...
]

如果你尝试用这个大摇大摆地进行测试

[
    "Dolo" , 7 ,
    "Cholecalciferol" , 9 ,
   ...
]

【讨论】:

@sapter -- you asked this question 6 小时前,我在 cmets 中告诉过您将 [FromBody] 放入参数中。请不要多次问同一个问题。

以上是关于API不接受对象列表作为参数.Net Core webAPI的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET Core Web API 中发布对象列表

NET Core - FromForm 发布的嵌套对象未作为普通列表发送到微服务

从 .NET Core Web API 返回错误消息

处理 ASP.NET Core Web API 对象属性绑定

ASP.Net Core WebApi几种版本控制对比

.net Core MVC:不接受 X-SRF-TOKEN,返回 400