Web API 2是返回201响应的空主体的最佳方法

Wer*_*ner 5 c# rest asp.net-web-api2

在Web API 2 POST方法中,似乎最好的响应方法是使用CreatedAtRoute方法。但是,在某些响应中,我希望响应的主体为空。因此,仅以201和位置标头答复。

我希望这可以工作:

[HttpPost]
[ResponseType(typeof(Product))]
public IHttpActionResult Post([FromBody] Product product)
{
    products.Add(product);
    return CreatedAtRoute<Product>("", new {id = product.Id}, null);
}
Run Code Online (Sandbox Code Playgroud)

但是,在Postman中进行检查时,它实际上返回字符串“ null”。有没有一种优雅的方法可以做到这一点?

小智 0

为了简单起见,您可以使用内置的“Created”方法,但您已经说过响应类型应该是“Product”。

Created("getPathHere", newProductObject);

否则,删除 Product 的响应类型,返回新的产品 id(如果不是即时的,则返回此创建过程所处的任何状态)。

Created(string.Format("/api/Products/{0}", productId), new { ProductId = productId, Status = "Awaiting Manufacture" });

  • 我看不出这如何解决我的问题。我不想在响应正文中包含任何内容。我想要的只是返回带有位置标头的代码 201。没有内容/正文。我希望这可以通过预期的 Web API 2 响应对象和媒体格式化程序实现。 (2认同)