Web Api路由和参数的接收

路由和参数的接收

首先什么是路由

在我们创建的Controllers里面的xxxContoller会发现
[Route("api/[controller]")]
这段代码有什么意义呢
实际Route 规定了我们的路由,
路由体现在URL里

http://localhost/api/controller?query

[controlller]中括号 差不多就是代表占位符

看代码

[ApiController]
//Url不区分大小写
//[action]  是你的方法名字 GetData
[Route("api/[controller]/[action]")]
public class TestController : ControllerBase
{
    [HttpGet]
    public string GetData() 
    {
        return "1";
    }
}

 

那么我们访问的url就是
http://localhost/api/test/getdata

去掉action的
[[Route("api/[controller]")]]
那么我们的url就是
http://localhost/api/test

去掉api/的
[[Route("[controller]")]]
那么我们的url就是
http://localhost/test

我们代码里会有不知一个Get请求,那么我们需要区分每个方法
看代码

[ApiController]
[Route("api/[controller]")]
public class TestController : ControllerBase
{
    //出去使用[action]占位的方式还有两种方式 第一种直接[HttpGet("xxxx")]
    /*
    [HttpGet("xxx")]
    public string GetData() 
    {
        return "1";
    }*/
 
    //第二种使用[Route("xxx")]
    [HttpGet]
    [Route("xxxx")]
    public string GetData() 
    {
        return "1";
    }
}

 

那么我们访问的url就是
http://localhost/api/test/xxx

细心的小伙伴能回会发现创建的有个Name 属性
那么他代表什么呢

Name,目前测试可以用于寻址,其它作用不明 ,有兴趣去查查官方文档吧

[HttpGet(Name = "GetWeatherForecast")]

第二个参数啥意思我也不知道,没研究过也没用过这个
string uri = Url.Link("GetWeatherForecast","");
 
//输出
https://localhost:7049/WeatherForecast?Length=0
 

 

 接收参数

接收参数的方法大概以下几种

FromBody  //application/json
FromForm  //前端的默认消息类型
FromHeader //从请求头里获取
FromQuery //从参数里获取
FromRoute //从路由中获取
FromServices  //这个Jwt篇讲解

 



posted @ 2022-03-09 21:05  仲夏不凉爽  阅读(196)  评论(0编辑  收藏  举报