作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的 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/
我是一名优秀的程序员,十分优秀!