单个整数的Web API ResponseType

时间:2016-03-26 20:22:32

标签: c# asp.net-web-api asp.net-web-api2

什么是"正确"调用Web API REST服务只需返回一个整数的方法吗?

我在这里没有XML,JSON或其他任何要求。对服务的调用只需要返回一个整数。

我在这里使用ResponseType属性吗?

我的服务返回类型为HttpResponseMessage,对于返回JSON的服务,我会将其内容属性设置为StringContent,使用UTF8" application / json"

但是单个整数的正确性是什么?

3 个答案:

答案 0 :(得分:5)

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

override func viewDidLoad() {
    super.viewDidLoad()

    let scene = StartScene(size: view.bounds.size)

    // Configure the view.
    let skView = self.view as! SKView
    skView.showsFPS = true
    skView.showsNodeCount = true

    /* Sprite Kit applies additional optimizations to improve rendering performance */
    skView.ignoresSiblingOrder = true

    /* Set the scale mode to scale to fit the window */
    scene.scaleMode = .ResizeFill

    skView.presentScene(scene)

}

或者如果你想将它包装在一个对象中以便于JSON消费,那么匿名对象就可以了:

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

Documentation here

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

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

答案 1 :(得分:2)

那么,取决于你想要回复身体的样子。只是一个数字:

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

包含数字的JSON对象:

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

答案 2 :(得分:1)

您可以实施自己的HttpContent类内容类型,该类别标记为abstract

StringContent通过继承ByteArrayContent来间接地从中获取。

一般来说,这取决于int的真实“含义”。如果这是某种标识符,我会把它包装成某种对象。