问题描述
[HttpGet("some/route")]
public ActionResult<string> GetSomething()
{
return Ok(23);
}
string
和int
不兼容,但这可以很好地编译。使用Swagger(Open API)之类的工具时,它们生成的端点定义不正确。
我想知道为什么没有输入ObjectResult
类?此外,是否有解决此问题的方法?
编辑:
我试图避免在招摇的定义声称返回string
时出现错误,但实际上却得到了int
。如果int
和string
没有意义,那么可以想象两个随机的JSON对象DtoA
和DtoB
。
解决方法
据我所知,响应不包含int和字符串类型。响应主体的类型为text / plain,application / json或其他。
因此,无需检查OkObjectResult
的{{1}}值中的int或字符串。通常,所有内容都将转换为字符串或字节
回复内容。
此外,大摇大摆还会根据
ActionResultObjectValue
的Tvalue类型。
如果返回ActionResult<Tvalue>
,则会发现结果将转换为public ActionResult<int> GetSomething()
。
更新:
OkObjectResult继承ActionResult。返回的子类不会影响父类的编译。这是设计使然。
int
使您可以返回源自ActionResult<T>
的类型或返回特定类型。
要强制执行编译错误,您可以返回int这是一种特定类型。当您返回ActionResult
时,您会看到错误消息出现。