gpt4 book ai didi

c# - 使用自定义类 retrofit [FromQuery] 未获取值

转载 作者:太空狗 更新时间:2023-10-29 23:28:49 36 4
gpt4 key购买 nike

我的 Web API 中的 Get 方法有问题:API 获取对象但使用默认值。

例如:

myRefitClient.GetSummary(new MyClass() { Prop = 1 });

Web API 正确接收到 MyClass 实例,但 Prop 为 0!

这就是我所拥有的:

Get 方法(Web API 中的 Controller ):

[HttpGet]
async Task<ActionResult> Get([FromQuery]MyClass req)

MyClass 是:

public class MyClass
{
public int Prop { get; set; }
}

我的 Refit Web API 接口(interface)是:

public interface IMyWebApi
{
[Get("/api/mycontroller")]
Task<PositionSummary> GetSummary(MyClass req);
}

所以,正如我所说,在通话中:

service.GetSummary(new MyClass() { Prop = 1 });

我在我的 Controller 中得到了一个 MyClass 实例,但是 Prop 是 0,而不是 1。

我做错了什么?

最佳答案

要强制 ASP.NET Web API(而非 ASP.NET Core)从 URI 读取复杂类型,请添加 [FromUri]参数的属性:

[HttpGet]
public async Task<ActionResult> Get([FromUri]MyClass req)

如果您使用的是 ASP.NET Core,请使用 [FromQuery]属性

[HttpGet]
public async Task<ActionResult> Get([FromQuery]MyClass req)

I'm getting a MyClass Instance in my Controller, but Prop is 0, instead of 1.

如果 /api/mycontroller 在 launchSettings.json 中设置为 launchUrl,那么您将在应用程序开始时获得 Prop = 0 的 MyClass 实例。但是下一次使用 Refit 的调用应该传递参数

关于c# - 使用自定义类 retrofit [FromQuery] 未获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46342756/

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