在存储库模式中创建一个简单的 .NET Core 3.1 Web API

作者 : 慕源网 本文共5779个字,预计阅读时间需要15分钟 发布时间: 2021-10-20 共281人阅读

介绍

本文是关于 Repository Pattern Architecture 的,主要关注如何从初始设置轻松创建 .NET Core Web API。

存储库模式

C#中的存储库模式是一种通过封装数据存储中持久化的对象集以及对它们执行的操作来实现数据访问的方法,
提供更面向对象的持久层视图。
使用存储库模式的一些优点
  • 代码的可重用性会非常高。
  • 您的业​​务逻辑可以在没有数据访问逻辑的情况下进行单元测试。
  • 业务实体是带有注释的强类型。
  • 集中的数据逻辑、业务逻辑和服务逻辑。
入门
通过以下链接从 Microsoft 官方站点安装最新稳定版本的 .NET CORE 3.1.5
关联
https://dotnet.microsoft.com/download/dotnet-core/thank-you/sdk-3.1.301-windows-x64-installer
接下来我们将开始创建新项目。请按照以下步骤操作
在这个项目中,我们将有 4 个部分:
  1. MyTestApp(包含控制器、视图、程序.cs 等的.Net Core 应用程序)
  2. MyTestApp.BAL(用于业务逻辑实现的 .Net 标准库)
  3. MyTestApp.DAL (.Net Standard Library for data access and other DB related implementation can be done)
  4. MyTestApp.IAL(用于接口类实现的 .Net 标准库)

笔记

我们可以再有一个项目来维护所有具有访问说明符的实体,但在下面的示例中,我没有为此创建/包含一个单独的项目。

第1步

打开 Visual Studio 并单击创建一个新项目。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

第2步

现在选择 ASP.NET Core Web 应用程序并单击“下一步”。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

第 3 步

输入项目名称,例如,我将项目名称指定为“MyTestApp”,然后单击“创建”。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

第四步

现在在下一个窗口中选择 .Net Core 版本,并在下面选择项目类型。选择项目类型为“API”或“Web 应用程序(模型-视图-控制器)”,在本例中,我将选择版本为“ASP.NET Core 3.1”,项目类型为“Web 应用程序(模型)” -View-Controller)”并点击“创建”。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

第 5 步

创建项目后,左键单击解决方案,然后在“添加”中单击“新建项目”。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

第 6 步

添加一个“类库(.NET 标准)”类型的新项目,然后单击“下一步”。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

第 7 步

选择一个项目名称作为“ProjectName.BAL”(在我的例子中是 MyTestApp.BAL),然后点击“创建”’。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

第 8 步

重复上述步骤创建(添加)以下项目“ProjectName.DAL”和“ProjectName.IAL”

步骤 9

左键单击“MyTestApp”并转到 Build Dependencies 并转到 Project Dependencies。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API
  • 选择 MyTestApp 并选择“取决于”部分中的所有项目。 

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

  • 选择 MyTestApp.BAL 并在“取决于”部分中选择“MyTestApp.DAL & MyTestApp.IAL”项目。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

  • 选择 MyTestApp.IAL 并在“取决于”部分中选择“MyTestApp.DAL”项目。 

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

第 10 步

在“MyTestApp”中左键单击“Dependencies”并转到“Add Reference”。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API
  • 选择“MyTestApp.BAL、MyTestApp.DAL、MyTestApp.IAL”并单击确定。 

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

  • 同样打开 MyTestApp.BAL 并左键单击“依赖项”并转到添加引用。选择“MyTestApp.DAL、MyTestApp.IAL”并单击确定。
在存储库模式中创建一个简单的 .NET Core 3.1 Web API
  • 同样打开 MyTestApp.IAL 并左键单击“依赖项”并转到添加引用。选择“MyTestApp.DAL”并单击“确定”。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

基本上,按照上述步骤将项目相互连接并连接构建依赖项,并访问类或接口或实体,或者可以基于访问说明符访问任何自定义类。
第 11 步
为了更好地理解,我将在应用程序中安装 swagger 以将数据从用户发送到控制器
  • 打开包管理器控制台并运行以下命令:“Install-Package Swashbuckle.AspNetCore”
第 12 步
现在左键单击控制器并单击“添加”并单击“控制器”,然后选择“API 控制器 – 空”,然后为您的控制器命名,在我的情况下,我将其命名为“MyNewAPIController”。
在存储库模式中创建一个简单的 .NET Core 3.1 Web API

现在在“MyTestApp.DAL”中创建一个名为“MyCustomEntity.cs”的自定义类文件,然后使用以下变量创建一个类,该变量用于以JSON响应的形式从API返回值。

using System;  
  
namespace MyTestApp.DAL  
{  
    public class MyCustomEntity  
    {  
        public class MyCustomResponse  
        {  
            public bool status { get; set; }  
            public string response { get; set; }  
        }  
  
    }  
}  

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

现在在“MyTestApp.IAL”中创建一个名为“IMyNewAPI.cs”的接口文件,然后为示例API方法创建一个接口方法。

using System;  
using static MyTestApp.DAL.MyCustomEntity;  
  
namespace MyTestApp.IAL  
{  
    public interface IMyNewAPI  
    {  
         MyCustomResponse GetAllData();  
    }  
}  

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

现在在“MyTestApp.BAL”中创建一个名为“MyNewApiBAL.cs”的类文件,然后实现之前创建的接口的定义。

using MyTestApp.IAL;  
using System;  
using static MyTestApp.DAL.MyCustomEntity;  
  
namespace MyTestApp.BAL  
{  
    public class MyNewApiBAL : IMyNewAPI  
    {  
        public MyCustomResponse GetAllData()  
        {  
            MyCustomResponse response = new MyCustomResponse();  
            try  
            {  
                response.status = true;  
                response.response = "API called successfully";  
            }  
            catch (Exception ex)  
            {  
                response.status = false;  
                response.response = "Exception occoured";  
            }  
            return response;  
        }  
    }  
}  

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

现在用下面的代码替换控制器,它指的是接口方法,还包括路由地址和方法头,例如 GET 或 POST。

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Threading.Tasks;  
using Microsoft.AspNetCore.Http;  
using Microsoft.AspNetCore.Mvc;  
using MyTestApp.IAL;  
using static MyTestApp.DAL.MyCustomEntity;  
  
namespace MyTestApp.Controllers  
{  
    [Route("MyNewAPI/")]  
    [ApiController]  
    public class MyNewAPIController : ControllerBase  
    {  
        private readonly IMyNewAPI _myNewAPI;  
  
        public MyNewAPIController(IMyNewAPI myNewAPI)  
        {  
            _myNewAPI = myNewAPI;  
        }  
  
        [HttpGet]  
        [Route("GetAllData")]  
        [ProducesResponseType(StatusCodes.Status200OK)]  
        [ProducesResponseType(StatusCodes.Status400BadRequest)]  
        public async Task<IActionResult> GetAllData()  
        {  
            MyCustomResponse response = new MyCustomResponse();  
            response = _myNewAPI.GetAllData();  
            if (response.status == true)  
            {  
                return Ok(response);  
            }  
            else  
            {  
                return BadRequest(response);  
            }  
        }  
    }  
}  

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

现在我们都准备好进行最后一步了。最后但并非最不重要的一点,请在 Startup.cs 中进行一次性设置。依赖注入发生在此页面上,包含有关 Swagger、所有控制器、CROS 和我们将在应用程序中使用的服务的详细信息。

using System;    
using System.Collections.Generic;    
using System.Linq;    
using System.Threading.Tasks;    
using Microsoft.AspNetCore.Builder;    
using Microsoft.AspNetCore.Hosting;    
using Microsoft.Extensions.Configuration;    
using Microsoft.Extensions.DependencyInjection;    
using Microsoft.Extensions.Hosting;    
using MyTestApp.BAL;    
using MyTestApp.IAL;    
    
namespace MyTestApp    
{    
    public class Startup    
    {    
        public Startup(IConfiguration configuration)    
        {    
            Configuration = configuration;    
        }    
    
        public IConfiguration Configuration { get; }    
    
        // This method gets called by the runtime. Use this method to add services to the container.    
        public void ConfigureServices(IServiceCollection services)    
        {    
            services.AddControllersWithViews();    
            services.AddControllers();    
            services.AddMvc();    
    
            //swagger dependency    
            services.AddSwaggerGen(c =>    
            {    
                c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "My New API", Version = "v1" });    
            });    
    
            //configure DI for application services    
            //every time you add a new controller with an interface implementation you need to register the same here    
            services.AddTransient<IMyNewAPI, MyNewApiBAL>();    
    
            //Allow cros in API    
            services.AddCors(options =>    
            {    
                options.AddPolicy("AllowAllOrigins",    
                    builder =>    
                    {    
                        builder.AllowAnyOrigin();    
                        builder.AllowAnyHeader();    
                        builder.AllowAnyMethod();    
                    });    
            });    
        }    
    
    
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.    
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)    
        {    
            if (env.IsDevelopment())    
            {    
                app.UseDeveloperExceptionPage();    
            }    
            else    
            {    
                app.UseExceptionHandler("/Home/Error");    
            }    
            app.UseStaticFiles();    
    
            app.UseRouting();    
    
            app.UseAuthorization();    
    
            app.UseEndpoints(endpoints =>    
            {    
                endpoints.MapControllerRoute(    
                    name: "default",    
                    pattern: "{controller=Home}/{action=Index}/{id?}");    
            });    
    
            // Shows UseCors with CorsPolicyBuilder.    
            app.UseCors("AllowAllOrigins");    
    
    
            // Enable middleware to serve generated Swagger as a JSON endpoint.    
            app.UseSwagger();    
    
            // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),     
            // specifying the Swagger JSON endpoint.    
            app.UseSwaggerUI(c =>    
            {    
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");    
                c.DefaultModelsExpandDepth(-1);    
            });    
    
    
            app.UseRouting();    
        }    
    }    
}     
第 13 步

现在运行应用程序并坐下来休息一会儿,应用程序会在您的浏览器中为您加载。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API
第 14 步
现在将“/swagger”放在“localhost:12567”前面。即“localhost:12567/swagger”,然后按回车键。
第 15 步

在 MyNewAPI 下按下 GetAllData API 并按下 Try it out 然后按下 Execute。

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

在存储库模式中创建一个简单的 .NET Core 3.1 Web API

结论

在本文中,我们讨论了有关如何轻松创建 .NET Core WEB API 的一些有趣内容。在接下来的文章中,我们将讨论更多关于 .NET Core 和其他服务的内容。在和你说再见之前,我只想让你知道这是我的第一篇文章,未来还会有更多有趣的文章出现。我希望你们都喜欢阅读这篇文章。

慕源网 » 在存储库模式中创建一个简单的 .NET Core 3.1 Web API

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录