如果我的 ASP.NET Web API 返回 GUID,Content-Type 是什么?

问题描述 投票:0回答:1

我有一个简单的方法来验证凭据并返回 GUID。

我的返回类型为

ActionResult<Guid>
,但是当我从自动生成的 Swagger 页面调用它时,它返回 406。我可以将返回类型更改为
ActionResult<string>
并传回
sessionGuid.ToString()
,它工作正常,但从 API 用户的角度来看,指定确切的返回类型似乎能提供更多信息。生成的swagger.json识别出来了,例如:

"content": {
    "text/plain": {
        "schema": {
            "type": "string",
            "format": "uuid"
        }
    }
}

Swagger 包含一个很好的示例 GUID,而不是通用单词“字符串”

Swagger return type example

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);
}
c# asp.net-web-api2 content-type
1个回答
0
投票

我们没有为每种可能的数据类型提供 MIME 类型。

您的困惑是由 Swagger 生成此信息引起的。但这来自 Swagger 扫描您的实际代码 - 这就是为什么它如此擅长构建此类建议/提示等。这就是它擅长的原因。

但它不反映可以使用的 MIME 类型。

从 API 用户的角度来看 - 这正是我们拥有 Swagger(或类似工具)的原因 - 能够准确地告诉 API 的形状是什么,定义是什么,等等。

© www.soinside.com 2019 - 2024. All rights reserved.