欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Netcore?Webapi返回?cái)?shù)據(jù)的三種方式示例

 更新時(shí)間:2022年09月20日 10:35:26   作者:Bonnie愛學(xué)習(xí)  
這篇文章主要為大家介紹了Netcore?Webapi返回?cái)?shù)據(jù)的三種方式示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

ASP.NET Core為Web API控制器方法返回類型提供了如下幾個(gè)選擇:

Specific type

IActionResult

ActionResult<T>

1. 返回指定類型(Specific type)

最簡單的API會返回原生的或者復(fù)雜的數(shù)據(jù)類型(比如,string 或者自定義對象類型)??紤]如下的Action方法,其返回了一個(gè)自定義的Author對象的集合。

[HttpGet]
public List<Author> Get() =>
    _repository.GetAuthors();
[HttpGet]
public IEnumerable<Author> Get()
{
   return _repository.GetAuthors();
}

從 NetCore 3.0 開始,你不僅可以定義同步形式的 IEnumerable<Author>方法,也可以定義異步形式的 IAsyncEnumerable<T>方法,后者的不同點(diǎn)在于它是一個(gè)異步模式的集合,好處就是 不阻塞 當(dāng)前的調(diào)用線程。

下面的代碼展示了如何用 異步集合 來改造 Get 方法。

[HttpGet]
public async IAsyncEnumerable<Author> Get()
{
   var authors = await GetAuthors();
   await foreach (var author in authors)
   {
        yield return author;
   }
}

2. 返回 IActionResult 實(shí)例

如果你要返回 data + httpcode 的雙重需求,那么 IActionResult 就是你要找的東西,下面的代碼片段展示了如何去實(shí)現(xiàn)。

[HttpGet]
public IActionResult Get()
{
  if (authors == null)
      return NotFound("No records");
  return Ok(authors);
}

上面的代碼有 Ok,NotFound 兩個(gè)方法,對應(yīng)著 OKResult,NotFoundResult, Http Code 對應(yīng)著 200,404。當(dāng)然還有其他的如:CreatedResult, NoContentResult, BadRequestResult, UnauthorizedResult, 和 UnsupportedMediaTypeResult,都是 IActionResult 的子類。

3. 返回 ActionResult<T> 實(shí)例

ActionResult<T>包裝了前面這種模式:可以返回 IActionResult(data + httpcode),也可以返回指定類型T

[HttpGet]
public ActionResult<IEnumerable<Author>> Get()
{
  if (authors == null)
       return NotFound("No records");
   return authors;
}

和之前IActionResult的 Get 方法相比,這里直接返回 authors 而不需要再用 OK(authors) 包裝,是一個(gè)非常好的簡化。

接下來再把 Get 方法異步化:

[HttpGet]
public async Task<ActionResult<IEnumerable<Author>>> Get()
{
   var data = await GetAuthors();
   if (data == null)
        return NotFound("No record");
   return data;
}

如果你有一些定制化需求,可以實(shí)現(xiàn)一個(gè)自定義的 ActionResult 類,做法就是實(shí)現(xiàn) IActionResult 中的 ExecuteResultAsync 方法即可。

以上就是Netcore Webapi返回?cái)?shù)據(jù)的三種方式示例的詳細(xì)內(nèi)容,更多關(guān)于Netcore Webapi 返回?cái)?shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論