Web API 单个整数的 ResponseType

Web API ResponseType for Single Integer

调用仅 return 单个整数的 Web API REST 服务的 "correct" 方法是什么?

我对 XML、JSON 或其他方面没有任何要求。对服务的调用只需要return一个整数。

我在这里使用 ResponseType 属性吗?

我的服务 return 类型为 HttpResponseMessage,对于诸如 returning JSON 之类的服务,我会将内容 属性 设置为这到 StringContent 与 UTF8 "application/json".

但是对于单个整数,什么是正确的?

您可以实现自己的内容类型,派生自 HttpContent class,标记为 abstract

StringContent 通过继承自 ByteArrayContent.

间接派生自它

一般要看你int的真实"meaning"。如果这是某种标识符,我会将其包装到某种对象中。

好吧,这取决于你想让响应主体看起来像什么。只是一个数字:

return Request.CreateResponse(HttpStatusCode.OK, "1");

一个 JSON 包含数字的对象:

var myNumber = new
{
    theNumber = 1
};
return Request.CreateResponse(HttpStatusCode.OK, myNumber);

我建议您为 API 方法使用 IHttpActionResult 类型。它将允许您使用几种不同的便捷方法来 returning 常见响应。在您的情况下,它看起来像这样:

public IHttpActionResult GetInteger() {
   // Ok is a convenience method for returning a 200 Ok response
   return Ok(1);
}

或者,如果您想 return 将它包裹在一个对象中以便于 JSON 使用匿名对象就可以了:

public IHttpActionResult GetInteger() {
   // Ok is a convenience method for returning a 200 Ok response
   return Ok(new {
      value = 1
   });
}

Documentation here

从文档中总结了您使用 IHttpActionResult 的一些原因:

  • 简化控制器的单元测试。
  • 将创建 HTTP 响应的通用逻辑移到单独的 类。
  • 通过隐藏构建响应的底层细节,使控制器操作的意图更加清晰。