asp.net core webapi 异步和返回值

"本文介绍了ASP.NET Core中WebAPI的使用方法,包括同步和异步方法的实现,如`[HttpGet]`与`[HttpGet("[Action]")]`的区别。同时展示了不继承`ControllerBase`时如何配置API控制器,以及WebAPI返回不同类型数据的处理,如普通类、`IActionResult`和`ActionResult<T>`。通过实例代码详细解析了各种用法。"
摘要由CSDN通过智能技术生成

1. webapi的方法可以同步也可以异步 如下 测试代码

有异步 [httpget]要加上 [action] 。否则报错

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace aspnetcore004.Controllers
{
    //有异步 [httpget]要加上 [action] 否则报错
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class TestController : ControllerBase
    {
        //下面为同步方法
        [HttpGet]
        public int Add(int i , int j)
        {
            return i+j;
        }
        //下面为异步方法,框架调用,直接使用
        [HttpGet]
        public async Task<string> Test()
        {
            string s =await System.IO.File.ReadAllTextAsync("D:/1.txt");
            return s;
        }
    }
}

2. webapi 控制器 可以 不继承 ControllerBase也可以使用,主要方便 单元测试 如下代码

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace aspnetcore004.Controllers
{
    //不继承 controllerbase 需要写下面 两个 特性 框架可以识别出api接口
    [Route("api/[controller]")]
    [ApiController]
    public class Test2Controller
    {
        [HttpGet]
        public int Add(int i ,int j)
        {
            return i + j;
        }
    }
}

3.webapi 返回普通类类型 默认为json格式

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace aspnetcore004.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class Test3Controller : ControllerBase
    {
        [HttpGet]
        public Person GetPerson()
        {
            return new Person(1, "张三");
        }
    }
}


//返回结果为
{
  "id": 1,
  "name": "张三"
}

 4. webapi 可以返回 IActionResult 和 ActionResult<类型>

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace aspnetcore004.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class Test4Controller : ControllerBase
    {
        //第一种写法
        public IActionResult GetGrade(int id)
        {
            if(id == 1)
            {
                //返回的是int 这里只能用 ok函数做为转换 
                return Ok(88);
            }else if (id == 2)
            {
                return Ok(99);
            }
            else
            {
                //重点是这里 ,如果 webapi不返回 IActionResult 则不可使用NotFound
                //这个是 返回一个 404 错误 并且显示错误信息。
                return NotFound("id错误,没有找到");
            }
        }

        //第二种写法
        public ActionResult<int> GetGrade2(int id)
        {
            if (id == 1)
            {
                //第二种方法 直接 返回 int 因为 IActionResult 派生 ActionResult
                return 88;
            }
            else if (id == 2)
            {
                return 99;
            }
            else
            {
                //它的返回值 继承 ActionResult
                return NotFound("id错误,没有找到");
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值