.net core3.0 api controller层接口

首先,在建立完.net core 3.0项目之后,要让系统能够找到controller层,那么就需要在startup.cs文件当中的ConfigureServices函数当中加入如下代码:

 services.AddControllers();

其次,在config函数当中,也要加入如下配置:

 			app.UseRouting();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

其中app.UseRouting代表使用路由组件。

在做完这些基本的配置之后,建立一个controller

 	[Route("/System/Login")]
    [ApiController]
    public class LoginController: ControllerBase
    {
        private readonly IUserService userService;
        public LoginController(IUserService userComponent)
        {
            this.userService = userComponent;
        }

        [HttpPost("login")]
        public async Task<ActionResult<UserModel>> Add([FromBody]LoginParam param)
        {
            var result = await Task.Run(() =>
            userService.Login(param)
            );
            return Ok(result);
        }
    }

其中Route和HttpPost标签表示的是调用接口的路由,除了HttpPost之外,还有诸如HttpGet这类的标签。为了让路由能够找到这个Controller,这个Controller需要继承.net core架构里的ControllerBase类。
然后是[FromBody]标签指的是从http请求的body里面取数据。除此之外,还有FromHeader,FromQuery,FromForm等标签也是同样差不多的作用。
而IUserService则是提供服务的接口层,通过依赖注入的方式进行初始化。而要用到注入的方式,就需要在startup.cs的ConfigureServices当中加入services.AddSingleton<IUserService, UserService>();来实现注册服务。
当然在实际项目中会有很多的服务接口需要注册,那么这时候可以通过映射的方式来实现自动化注册。
首先在Program.cs中改为:

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                }).UseServiceProviderFactory(new AutofacServiceProviderFactory());
    }

其次,在startup.cs里加入ConfigureContainer方法并实现,具体实现代码如下:

            builder.RegisterAssemblyTypes(typeof(Program).Assembly)
                    .Where(x => x.Name.EndsWith("Service", StringComparison.OrdinalIgnoreCase))
                    .AsImplementedInterfaces();           

在实际项目可能还会遇到所要映射的类是在第三方库的情况,那么只要在ConfigureContainer方法加入如下代码:

builder.RegisterAssemblyTypes(Assembly.Load("这里是你所要加的第三方库的dll名称")).AsImplementedInterfaces();
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值