Netcore Webapi返回数据的三种方式示例

 更新时间:2022年09月20日 10:35:26   作者:Bonnie爱学习  
这篇文章主要为大家介绍了Netcore Webapi返回数据的三种方式示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

ASP.NET Core为Web API控制器方法返回类型提供了如下几个选择:

Specific type

IActionResult

ActionResult<T>

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

最简单的API会返回原生的或者复杂的数据类型(比如,string 或者自定义对象类型)。考虑如下的Action方法,其返回了一个自定义的Author对象的集合。

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

从 NetCore 3.0 开始,你不仅可以定义同步形式的 IEnumerable<Author>方法,也可以定义异步形式的 IAsyncEnumerable<T>方法,后者的不同点在于它是一个异步模式的集合,好处就是 不阻塞 当前的调用线程。

下面的代码展示了如何用 异步集合 来改造 Get 方法。

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

2. 返回 IActionResult 实例

如果你要返回 data + httpcode 的双重需求,那么 IActionResult 就是你要找的东西,下面的代码片段展示了如何去实现。

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

上面的代码有 OkNotFound 两个方法,对应着 OKResult,NotFoundResult, Http Code 对应着 200,404。当然还有其他的如:CreatedResult, NoContentResult, BadRequestResult, UnauthorizedResult, 和 UnsupportedMediaTypeResult,都是 IActionResult 的子类。

3. 返回 ActionResult<T> 实例

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) 包装,是一个非常好的简化。

接下来再把 Get 方法异步化:

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

如果你有一些定制化需求,可以实现一个自定义的 ActionResult 类,做法就是实现 IActionResult 中的 ExecuteResultAsync 方法即可。

以上就是Netcore Webapi返回数据的三种方式示例的详细内容,更多关于Netcore Webapi 返回数据的资料请关注脚本之家其它相关文章!

相关文章

  • C#实现json的序列化和反序列化实例代码

    C#实现json的序列化和反序列化实例代码

    这篇文章主要介绍了C#实现json的序列化和反序列化实例代码,有需要的朋友可以参考一下
    2013-12-12
  • C# dll代码混淆加密的实现

    C# dll代码混淆加密的实现

    本文主要介绍了C# dll代码混淆加密的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • C#中IList<T>与List<T>的区别深入解析

    C#中IList<T>与List<T>的区别深入解析

    本篇文章主要是对C#中IList<T>与List<T>的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • Unity3D基于UGUI实现虚拟摇杆

    Unity3D基于UGUI实现虚拟摇杆

    这篇文章主要为大家详细介绍了Unity3D基于UGUI实现虚拟摇杆,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C#二进制序列化实例分析

    C#二进制序列化实例分析

    这篇文章主要介绍了C#二进制序列化,实例分析了C#二进制序列化的方法,代码中有较为详尽的注释说明,便于理解,需要的朋友可以参考下
    2015-05-05
  • C#使用System.Net库实现自动发送邮件功能

    C#使用System.Net库实现自动发送邮件功能

    在C#编程环境中,实现邮件发送功能是一项常见的需求,无论是Web应用程序还是Windows窗体应用程序,下面小编就来为大家讲讲如何使用System.Net库实现这一功能吧
    2025-03-03
  • 如何使用C#在PDF文件添加图片印章

    如何使用C#在PDF文件添加图片印章

    文档中添加印章可以起一定的作用,比如,防止文件随意被使用,或者确保文档内容的安全性和权威性。C#添加图片印章其实也有很多实现方法,这里我使用的是免费的第三方软件Free Spire.PDF,向大家阐述如何以编程的方式在PDF文件中添加图片印章
    2017-01-01
  • C# 获取属性名的方法

    C# 获取属性名的方法

    C# 获取属性名的方法实例,需要的朋友可以参考一下
    2013-03-03
  • C#开发纽曼USB来电小秘书客户端总结

    C#开发纽曼USB来电小秘书客户端总结

    这篇文章主要介绍了C#开发纽曼USB来电小秘书客户端总结,对于C#项目开发来说有一定的参考借鉴价值,需要的朋友可以参考下
    2014-08-08
  • C#框架winform实现简单点餐系统

    C#框架winform实现简单点餐系统

    这篇文章主要为大家详细介绍了C#框架winform实现简单点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论