首页 > 其他分享 >ABP-VNEXT 学习笔记(四)自动API 控制器

ABP-VNEXT 学习笔记(四)自动API 控制器

时间:2022-08-25 18:24:42浏览次数:60  
标签:VNEXT Abp Volo System ABP API using options

官方文档地址:https://docs.abp.io/en/abp/latest/API/Auto-API-Controllers

 

详细的请阅读官方文档,这边侧重简化说明怎么应用和一些注意要点。

自动API,即代码端只需要定义服务层即可,无需每一个服务层方法都对应在控制器中编写一个action。

这个可以大大节省我们的时间和省略大量控制器端的代码。

该示例项目,我们建了一个ApplicationContract 接口层,一个Application 服务层,两个web项目。

 

 

接口层如下:

我们定义了2个接口,分别是获取姓名和年龄。

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;

namespace AbpAPI
{
    public interface IStudentService:IApplicationService
    {

        Task<string> GetNameAsync();

        Task<int> GetAgeAsync();


    }
}

 

服务层实现:

using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Services;

namespace AbpAPI
{

    public class StudentService : ApplicationService, IStudentService
    {


        [RemoteService(IsEnabled =false)]  //该设置表示该方法不自动生成api,但不影响直接调用。
        public async Task<int> GetAgeAsync()
        {
            return await Task.FromResult(18);
        }

        public async Task<string> GetNameAsync()
        {
            return await Task.FromResult("李四");
        }
    }
}

 

下面是web层的注入:

using Microsoft.OpenApi.Models;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Autofac;
using Volo.Abp.Modularity;
using Volo.Abp.Swashbuckle;

namespace AbpAPI.Web
{
    [DependsOn(typeof(AbpAPIApplicationModule))]
    [DependsOn(typeof(AbpAspNetCoreMvcModule))]
    [DependsOn(typeof(AbpSwashbuckleModule))]
    [DependsOn(typeof(AbpAutofacModule))]
    public class AbpAPIWebModule : AbpModule
    {
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            base.ConfigureServices(context);
            //注入自动API
            Configure<AbpAspNetCoreMvcOptions>(options =>
            {
                options
                    .ConventionalControllers
                    .Create(typeof(AbpAPIApplicationModule).Assembly);  //设置哪个类库要自动API,可配置多个服务实现层
            });

            //下面是自动生成swaggerUI
            var services = context.Services;
            services.AddAbpSwaggerGen(options =>
        {
            options.SwaggerDoc("v1", new OpenApiInfo { Title = "动态API", Version = "v1" });
            options.DocInclusionPredicate((docName, description) => true);
            options.CustomSchemaIds(type => type.FullName);

        }
    );

        }

        public override void OnApplicationInitialization(ApplicationInitializationContext context)
        {
            
            var app = context.GetApplicationBuilder();

            //应用swaggerUI
            app.UseSwagger();
            app.UseAbpSwaggerUI(options =>
            {
                options.SwaggerEndpoint("/swagger/v1/swagger.json", "动态API");
            });

            base.OnApplicationInitialization(context);
        }
    }
}

 

这里面做了2个配置

若单单配置自动API,只需要

  //注入自动API
            Configure<AbpAspNetCoreMvcOptions>(options =>
            {
                options
                    .ConventionalControllers
                    .Create(typeof(AbpAPIApplicationModule).Assembly);  //设置哪个类库要自动API,可配置多个服务实现层
            });

 

配置swaggerUI是方便我们查看api内容和模拟请求。

这样,就完成了自动API的配置。

有个点需要注意看官方文档的, 就是关于请求方式和url路径。官方文档做了详细说明。在路径默认固定以 /api/app/开头,方法名中的Get和async,service都会被清掉。

比如StudentService下的GetName方法,最终请求的url是 /api/app/student/name

下面我们运行起来,看swagger

 

 

可以看到,这时候只有getname方法是有生成API,GetAge是没有的。

 

至此,自动生成API的应用就这么简单。

 

标签:VNEXT,Abp,Volo,System,ABP,API,using,options
From: https://www.cnblogs.com/fei686868/p/16625289.html

相关文章

  • 热门好用的IP归属地API
    今天给大家推荐一个IP归属地API,非常热门好用,它是IP地址定位数据库的在线调用接口,包含43亿全量IPv4,支持到中国地区(不含港台地区)区县级别,含运营商数据。 IP查询可以应用......
  • 热门好用的手机号码归属地API
    今天给大家分享一款APISpace热门好用的API——手机号码归属地API,可根据手机号码查询其省市区、运营商区号行政区划代码等信息。上亿条数据囊括最新的170、166、147等号......
  • 微信公众平台开发 - 接入公众号(.NetCore+WebApi)
    1.使用WebApi来配置公众号服务器地址,get用于签名,post用于接口,需要注意路由的定义  namespaceTzj.WeiXinSite.Controllers.Api{[Route("api/[controller]")]......
  • APL概述和使用步骤和Scanner概述及其API文档的使用
    APL概述和使用步骤 概述:API(ApplicationProgrammingInterface),应用程序编程接口。JavaAPl是一本程序员的字典,JDK中提供给我们使用的类的说明文档。这些类将底层的代......
  • 【原创】只用Asp.NET Core Web API与Vue 3.0搭建前后分离项目
    特地记录一下,网上的教程写的稀里糊涂的,整得我都心塞塞的,其实实现的过程蛮简单的问题是这样的:我将Vue构建生成好的文件,放在后端wwwroot文件里面,并开启静态文件访问功能,结果......
  • restfulAPI接口规范/django rest_Framework_环境
    一.RESTFUlAPI设计1).域名应该将api部署在专用域名下https://www.baidu.com/api/2).版本应该将API版本号放到路径中https://www.baidu.com/api/1.0/loginhttps:......
  • API基础正则表达式8月23日
    API基础第二天:回顾:String:Strings=newString("hello");String常用方法:length():获取长度trim():去掉两边空白toUpperCase()和toLowerCase():转大写/转小写st......
  • API集合8月24日
    集合第一天:回顾:正则表达式:用于描述字符串内容格式,匹配字符串是否符合格式要求String支持正则表达式的方法:matches():匹配replaceAll():替换split():拆分Obj......
  • YApi-v1.9.2部署失败(Accessing non-existent property 'count' of module exports ins
    部署YApi时,出现报错信息:Accessingnon-existentproperty'count'ofmoduleexportsinsidecirculardependencyGitHub上未找到解决方案,网上发现其他同学也遇到了类似的......
  • 热门好用的二维码生成器API
    如今在我们的生活工作中,二维码的运用也是非常广泛的,身份验证、扫码登录、二维码支付、二维码点餐等等,可以说是无处不在的。 今天我就给大家推荐一款非常热门好用的API......