.NET 6 轻量级 WebApi 框架 FastEndpoints 入门

发布时间 2024-01-08 13:05:48作者: 十八岁的郭富城

原文:.NET 6 轻量级 WebApi 框架 FastEndpoints 入门_.net api框架-CSDN博客

 

(一)前言

        前段时间我从公众号:dotNET跨平台了解到了一个webapi框架叫:基于 .NET 6 的轻量级 Webapi 框架 FastEndpoints (qq.com)

        随后觉得可以试试,然后就去搜索了一下,不过网上的资料比较少,可能是由于该框架出来的不久,毕竟.NET 6 也没发布多久,但是官网也提供了不少资料:FastEndpoints (fast-endpoints.com)

        又到了充电学习的时间,然后我就开始按照公众号的文章一步一步操作,发现这文章也是用的官方的快速入门教程的一部分,但是里面有些代码和解释不完整,导致我卡在了一些地方,没办法还是得在官网和github上去扒拉。

        最终就有了我接下来要分享的内容:利用vs2022建一个webapi的服务程序,写两个api,写两个api,一个是添加用户,一个是获取token,这样就会涉及到数据库的查询、新增、修改。以及token的认证,以及swagger的配置,数据使用的是MongoDB,平时我是用的mysql,但是官网用的是这个,还有个原因就是觉得自己也该接触一下这些数据库,得试试了。

        分享的内容对于FastEndpoints整个框架的内容来说确实只有一小部分内容,但是已经够引入门了,更深入的得自己根据需求去深入去学习,生产环境中遇到的需求在官网的上基本都有解决方案。

        虽然我没有深入去了解了,但是个人感觉了一下这样的WebAPI确实比之前的方便快捷了不少,效率也快了不少,我个人觉得挺实用的,因为现在都微服务了,一个服务的api功能本来就比较专一,用这个框架来做个人觉得问题不大,虽然我没有用到生产环境。

参考资料整理:

1.FastEndpoints官网:快速端点 (fast-endpoints.com)

2.官方示例文章:在 .net 6 中构建 REST API 非常简单!- 开发社区 ? ?? ? (dev.to)

3.官方示例项目文件:https://codeload.github.com/dj-nitehawk/MiniDevTo/zip/refs/heads/main

4.完整的官方示例教程:Get Started | FastEndpoints (fast-endpoints.com)

5.我的项目文件:GitHub - LYD2015/MyFastEndpoints,就是下面分享类容的项目,建议下载后对照看。

建议:先看看官网的快速构建,以及部分思想介绍,因为下面我只是分享项目怎么写的,思想方面需要自己慢慢悟。

(二)创建项目

        话不多说,我们可以可以开始了,下面采用图文方式来介绍,也要注意图片上的笔记文字哦。

1.创建一个空的WebAPI项目

 

2.引入需要的nuget包

 

 3.创建结构目录

        我的这个目录结构是根据官网的例子以及结合自己以前开发一些项目的经营简单建立的一个目录结构。简而言之来说,官网的例子或者说是FastEndpoints思想的其中一点就是每一个API一个文件夹,每个文件夹下面都有几个API需要的.cs文件。

 

 

4.修改程序入口文件Program.cs   

        没有写注释的就是建项目自动生成的。

  1.  
    global using FastEndpoints;
  2.  
    global using FastEndpoints.Security;
  3.  
    global using MyWebApp.Consts;
  4.  
    using FastEndpoints.Swagger;
  5.  
    using MongoDB.Entities;
  6.  
     
  7.  
    var builder = WebApplication.CreateBuilder();
  8.  
    builder.Services.AddFastEndpoints();//FastEndpoints框架核心
  9.  
    builder.Services.AddAuthenticationJWTBearer(SysConst.TokenSigningKey);//添加jw认证
  10.  
    builder.Services.AddSwaggerDoc(addJWTBearerAuth:true);//添加swagger,并在swagger上显示输入token的按钮
  11.  
     
  12.  
    var app = builder.Build();
  13.  
    app.UseAuthentication();//启用jw认证
  14.  
    app.UseAuthorization();
  15.  
    app.UseFastEndpoints();//启用FastEndpoints框架核心
  16.  
    app.UseOpenApi();//启用swagger扫描api
  17.  
    app.UseSwaggerUi3(s => s.ConfigureDefaults());//默认配置启用swagger的ui
  18.  
     
  19.  
    await DB.InitAsync(database: "FastEndpoints_TestDB", host: "localhost");//配置连接到我本地的MongoDB数据库
  20.  
     
  21.  
    app.Run();

对了,到这里你得去安装一个MongoDB的数据库,直接去官网下载就可以安装就可以,没用过的小伙伴在网上找安装教程时注意,基本都过时了,现在MongoDB安装的时候已经不用手动配置了,我就是安装好了之后直接用Navicat Premium 15连接就可以用了。

5.到此处你可以启动项目试试,但是会报出以下错误:

错误翻译过来的意思是:FastEndpoints无法找到任何端点声明!。也就是说一个API都没有,那我们就去写个API了。

(三)编写业务API

1.写一个AddUser的API,也就是像用户表里加一个用户。这样的话我们得先建一个UserInfo的实体。 

 

 2.实体建完了,该去建一个终端了,也就是API。

 

 

 

3.到此处可以再次运行,然后在浏览器中输入swagger地址,就可以看到这个API了。

当然此时使用swagger请求接口是不行的,因为还有token验证。好了,那在写一个获取token的API吧。

4.写一个登录获取token的API

        其实方法和上面的一样,我就在截个图示意一下:

 

好了,这样的话就可以在此运行,然后先在/user/loginAPI上获取一个token,这个API是允许匿名访问的,如下图

 swagger访问结果如下:

 把这个结果拿到下图位置,就可以去访问添加用户的API了

 添加用户成功后,在数据库可以看到如下图的两条数据

 到这里就可以结束了,基本东西都有了,剩下的就是业务逻辑的问题。弄懂了之后其实蛮简单的。当然再深入之的话可能又会踩很多坑,毕竟新东西都是这样的,欢迎大家把踩的坑和解决方案留言下来。