我有一个简单的方法来验证凭据并返回 GUID。
我的返回类型为
ActionResult<Guid>
,但是当我从自动生成的 Swagger 页面调用它时,它返回 406。我可以将返回类型更改为 ActionResult<string>
并传回 sessionGuid.ToString()
,它工作正常,但从 API 用户的角度来看,指定确切的返回类型似乎能提供更多信息。生成的swagger.json识别出来了,例如:
"content": {
"text/plain": {
"schema": {
"type": "string",
"format": "uuid"
}
}
}
Swagger 包含一个很好的示例 GUID,而不是通用单词“字符串”
GUID 似乎没有 MIME 类型。有办法让它发挥作用吗?
[Consumes("application/json")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[Produces("text/plain")]
[HttpPost]
public ActionResult<Guid> Authenticate([FromBody] Credentials credentials) {
Guid sessionGuid;
try {
sessionGuid = _database.CreateApiSession(credentials);
} catch (BaseRecordNotFoundException) {
return Unauthorized();
} catch (BaseInvalidDataException) {
return Unauthorized();
}
return Ok(sessionGuid);
}
我们没有为每种可能的数据类型提供 MIME 类型。
您的困惑是由 Swagger 生成此信息引起的。但这来自 Swagger 扫描您的实际代码 - 这就是为什么它如此擅长构建此类建议/提示等。这就是它擅长的原因。
但它不反映可以使用的 MIME 类型。
从 API 用户的角度来看 - 这正是我们拥有 Swagger(或类似工具)的原因 - 能够准确地告诉 API 的形状是什么,定义是什么,等等。