【发布时间】:2017-01-30 20:47:06
【问题描述】:
具有以下签名的 Web API 方法实际上返回了什么?
[HttpPost]
public async Task<IHttpActionResult> Post([FromBody] ReviewViewModel review)
{
using (var context = new BooksContext())
{
var book = await context.Books.FirstOrDefaultAsync(b => b.Id == review.BookId);
if (book == null)
{
return NotFound();
}
var newReview = context.Reviews.Add(new Review
{
BookId = book.Id,
Description = review.Description,
Rating = review.Rating
});
await context.SaveChangesAsync();
return Ok(new ReviewViewModel(newReview));
}
}
方法取自:http://www.developerhandbook.com/c-sharp/create-restful-api-authentication-using-web-api-jwt/
我正在考虑是:
1) 在 .IsCompleted 为真之前,框架不会向调用客户端返回响应,或者 2)框架确实返回给客户端,但客户端必须优雅地处理这种情况,或者 3) 完全不同的东西。
【问题讨论】:
-
是1号)
-
一旦您了解了异步语法糖背后的状态机,就更容易意识到真正发生了什么。
-
我以为我理解状态机,但这将是 Web API 在此之上提供额外功能,是吗?
标签: c# asp.net-web-api async-await