WebApi上非同步Api的方法名稱
偶然看到的討論,順便記錄起來
在寫Code的習慣上,非同步的方法名稱都會冠上後綴Async
ex: CreateAsync
若遇到了前端要呼叫後端的Api時,就需要使用完整的鏈結
ex: Home/GetMemberAsync
在.NET Core 3.0後,路由允許鏈結不冠上Async後綴,下面用例子說明:
1.若有個Controoler,裡面包含了一個Async方法,當發出兩種reqeust時的情況
- Home/GetAllAsync => 404
- Home/GetAll => Pass
public class HomeController : Controller
{
public Task<ApiResult<object>> GetAllAsync()
{
return Task.FromResult(new ApiResult<object>());
}
}
2.若不想要這樣的約定,可以從Startup上設定,指定 SuppressAsyncSuffixInActionNames 為 false,上面例子的結果就會變成
- Home/GetAllAsync => Pass
- Home/GetAll => 404
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews(options =>
{
options.SuppressAsyncSuffixInActionNames = false;
});
}
3.順帶一提,若在View上透過UrlHelper產生的連結,會是冠上後綴Async的Url,代表點下去會直接404