gpt4 book ai didi

c# - 将 json post 请求中的多个复杂参数传递给 asp.net WebApi

转载 作者:行者123 更新时间:2023-11-30 15:36:58 24 4
gpt4 key购买 nike

假设 ApiController 的操作具有多个参数:

[HttpPost]
public void AddAddress( Person person, Address address, int simple )

或者类似的东西。现在我尝试发送内容类型为 application/json 和 json 的发布请求,如下所示:

{
person: {...}, address: {..}, simple: 1
}

假设它是有效的 json ;)

或者像这样在 json 数组中: [人,地址,简单]

但是 WebApi 不会识别这个并告诉我它找不到操作,因为它不支持 json 请求中的多个参数。

我正在使用 HttpClient 从 C# 客户端执行此操作,我们想使用 json 进行发布请求。我想使用 WebApi.Client 包,它为 HttpClient 提供了几个有用的扩展,但我们有一个可移植的库项目(webapi 客户端不支持)。

我将如何支持此功能?

我尝试使用自定义的 ActionFilter,它永远不会运行,因为它无法事先找到操作。我尝试了不知道上下文和参数的 MediaTypeFormatter,还尝试了 ModelBinder,它似乎也只是基于每个参数,并不总是被执行。

谢谢!

最佳答案

带有格式化程序的 ASP.NET Web API 中的内置参数绑定(bind)策略仅支持映射到请求正文的单个复杂参数。在您的情况下,您正在尝试映射至少两个复杂的参数。不扩展此基础结构的最简单解决方案是创建一个新的模型类,其中包含这些参数作为属性

public class AddressModel
{
public Person Person { get; set; }
public Address Address { get; set; }
public int Simple { get; set; }
}

并在您的 Controller 操作中使用该模型

public void AddAddress( AddressModel model );

关于c# - 将 json post 请求中的多个复杂参数传递给 asp.net WebApi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13177386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com