02Controller控制器的使用 - ASP.NET Core WebAPI


一、控制器是什么?

微软定义:控制器用于对一组操作进行定义和分组。 操作(或操作方法)是控制器上一种用来处理请求的方法。 控制器按逻辑将类似的操作集合到一起。 通过这种操作的聚合,可以共同应用路由、缓存和授权等通用规则集。 请求通过路由映射到操作。 控制器按请求激活和释放。

个人理解:基于上篇对最小API的对比,不难发现直接使用app.MapGet等路由方法太过随便,使用控制器方法更为集中管理。

HTTP请求
认证授权
路由方法
模型绑定

二、使用步骤

1.添加服务

在app对象中,添加控制器服务,再启动路由映射

代码如下(示例):

var builder = WebApplication.CreateBuilder(args);

// 服务添加控制器
builder.Services.AddControllers();

var app = builder.Build();

app.UseHttpsRedirection();

// 映射路由
app.MapControllers();

app.Run();

2.创建控制器类

在控制器类上添加[ApiController]属性,然后再继承ControllerBase基类

代码如下(示例):

[ApiController]
public class ShirtsController : ControllerBase

有两种方式都可以进行路由映射。

2.1在方法上使用Route属性

路由名称和参数都写到Route属性里,每个方法都需要添加属性。


using Microsoft.AspNetCore.Mvc;

namespace _02WebApiController.Controllers
{
    [ApiController]
    public class ShirtsController : ControllerBase
    {
        [HttpGet]
        [Route("/shirts")]
        public string GetShirts()
        {
            return "Reading all the shirts";
        }

        [HttpGet]
        [Route("/shirts/{id}")]
        public string GetShirtsById(int id)
        {
            return $"Reading shirt with ID:{id}";
        }

        [HttpPost]
        [Route("/shirts")]
        public string CreateShirt()
        {
            return "Creating a shirt";
        }

        [HttpPut]
        [Route("/shirts/{id}")]
        public string UpdateShirt(int id) 
        {
            return $"Updating shirt with ID:{id}";
        }

        [HttpDelete]
        [Route("/shirts/{id}")]
        public string DeleteShirt(int id)
        {
            return $"Deleting shirt with ID:{id}";
        }
    }
}

2.2在类名上使用Route属性

路由名称都在类的Route属性统一指定([controller]指控制器名称),参数写到请求方法属性里。


using Microsoft.AspNetCore.Mvc;

namespace _02WebApiController.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class NewShirtsController : ControllerBase
    {
        [HttpGet]
        public string GetShirts()
        {
            return "Reading all the shirts1";
        }

        [HttpGet("{id}")]
        public string GetShirtsById(int id)
        {
            return $"Reading shirt with ID:{id}";
        }

        [HttpPost]
        public string CreateShirt()
        {
            return "Creating a shirt";
        }

        [HttpPut("{id}")]
        public string UpdateShirt(int id) 
        {
            return $"Updating shirt with ID:{id}";
        }

        [HttpDelete("{id}")]
        public string DeleteShirt(int id)
        {
            return $"Deleting shirt with ID:{id}";
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值