# Cike.AutoApi **Repository Path**: paeq/auto-web-api ## Basic Information - **Project Name**: Cike.AutoApi - **Description**: 🔥无需创建Controller,根据restful规范 将业务层 动态生成控制器🔥 - **Primary Language**: C# - **License**: MIT - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2024-01-16 - **Last Updated**: 2024-01-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Cike.AutoApi #### 介绍 🔥自动api,让你的代码更加简洁🔥。如果你的控制器层只是像以下这种,转发了业务层的代码,那么自动api将非常适合您的项目。自动api会直接根据你业务层的方法,结合restful规范动态生成控制器。 > 控制器只做转发,没有做任何事情,形成了大量的冗余代码 ```c# public class UserController:ControllerBase { private readonly IUserAppService _userAppService; public UserController(IUserAppService userAppService) { _userAppService=userAppService; } [HttpGet] public async Task>> GetListAsync(xxxDto input) { return await _userAppService.GetListAsync(input); } [HttpPost] public async Task CreateAsync(xxxDto input) { return await _userAppService.CreateAsync(input); } [HttpPost] public async Task UpdateAsync(Guid id,xxxDto input) { return await _userAppService.UpdateAsync(id,input); } } ``` #### 软件架构 * 本项目依赖于.net6 #### 安装教程 ```shell dotnet add package Cike.AutoApi ``` #### 使用说明 * 在 ```Program.cs``` 中添加以下两段代码 ```c# //放在AddController或者AddMvc后面 builder.Services.AddAutoApiService(opt => { //NETServiceTest所在程序集添加进动态api配置 opt.CreateConventional(typeof(NETServiceTest).Assembly); }); ``` 2. 业务层代码,只需要继承 ```IAutoApiService``` 接口就行 ```c# public class TestService : IAutoApiService { public async Task> CreateAsync(TestCreateUpdateInput input) { return new List { $"{input.Code}|{input.Name}" }; } public async Task GetListAsync(string keyword) { return keyword; } public async Task> UpdateAsync(Guid id, TestCreateUpdateInput input) { return new List { $"{id}|{input.Code}|{input.Name}" }; } /// /// 文件流使用,上传的时候正常传到报文体内就行了 /// /// /// public async Task ImportAsync(IAutoApiStreamContent file) { using var fileStream = file.GetStream(); return file.FileName; } } ``` 3. 最终效果 ![运行效果图](./doc/%E8%BF%90%E8%A1%8C%E6%95%88%E6%9E%9C%E5%9B%BE.png) #### 使用本项目的框架 1. [Yi.Framework](https://gitee.com/ccnetcore/Yi)