ASP.NET Core之Web API基础使用

Web API基础

  • 操作方法的返回值和状态码

    • ASP.NET Core Web API 中的操作方法的返回值如果是普通数据类型,那么返回值就会默认被序列化为JSON格式的响应报文体进行返回

    • ASP.NET Core Web API 中的操作方法的返回值同样支持IActionResult类型,但是IActionResult不包含值的类型信息

    • Swagger无法从操作方法的声明中推断返回数据的类型,因此,ASP.NET Core中提供了一个泛型的IActionResult<T>类型

    • 用法和IActionResult类似

    • 		//返回值和状态码
              [HttpGet] 
              public ActionResult<Person> GetPerson(int id) 
              {
                  if (id <= 0)
                  {
                      return BadRequest("必须是正数");
                  }
                  else if(id == 1)
                  {
                      return new Person(1, "杨中科", 18);
                  }
                  else
                  {
                      return NotFound("人员不存在");
                  }
              }
      
    • 在项目中,我们对于处理失败的请求都会要求统一响应报文体,这里使用来模拟一下

      • ErrorInfo类

        •  public record ErrorInfo(int code,string message);
          
      • 控制器

        •         [HttpGet]
                  public ActionResult<Person> GetPerson2(int id)
                  {
                      if (id <= 0)
                      {
                          return BadRequest(new ErrorInfo(1, "必须是正数"));
                      }
                      else if (id == 1)
                      {
                          return new Person(1, "杨中科", 18);
                      }
                      else
                      {
                          return NotFound(new ErrorInfo(2, "人员不存在"));
                      }
                  }
          
  • 操作方法的参数接收方式

    • URL

      • 在[HttpGet]]、[HttpPost]]等中使用占位符,比如{schoolName},捉路径中的内容,从而供Action方法的参数使用。
        比如发送如此请求/Students/GetAll/school/MIT/class/A001

      • 则对应的操作方法可以是``[HttpGet(“school/{schoolName}/class/{classNo}”)]`

      • 捕捉的值会被自动赋值给Action中同名的参数,如果名字不一致,可以用[FromRoute(Name="名字")]

      • 演示

        • 		//参数获取方式: URL
                  [HttpGet("{name}/{age}")]
                  public ActionResult<Person> GetResult(string name , [FromRoute(Name ="age")]int id) 
                  {
                      return new Person(1, name, id);
                  }
          
    • QueryString(我们默认写法就是QueryString)

      • 使用[FromQuery]来获取QueryString中的值。如果名字一致,只要为参数添加[FromQuery]即可;而如果名字不一致,
        [FromQuery(Name=名字]
      • QueryString和Route可以混用
    • JSON报文体

      • Neb APIE的开发模式下,Json格式的请求体是主流。

      • 只要声明一个模型类son请求的格式一致即可。

      • 一定要设定请求头中的Content-Type为application/,json,而且数据必须是合法的json格式。

      • 也是可以把从URL获取参数、从请求报文体获取数据等这些混合使用。
        [HttpPost("classld/{classld)")]

        public ActionResult<long>AddNew(long classld,
        StudentModel s)
        
    • Web API 中很少用的方式

      • 从Content-Type为multipart/,form-data的请求中获取数据的[From Form]
      • 从请求报文头中获取值的[FromHeader]。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栀梦星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值