MasaFramework的MinimalAPI設計

2022-09-23 15:00:41

在以前的MVC參照程式中,控制器負責接收輸入資訊、執行、編排操作並返回響應,它是一個功能齊全的框架,它提供了過濾器、內建了模型繫結與驗證,並提供了很多可延伸的管道,但它偏重,不像其它語言是通過更加簡潔的方式來開啟Web之旅的,因此在.Net6.0官方引入了MinimalAPIs,即最小API,與MVC相比,它足夠的簡潔,適合小型服務來使用,下面就讓我們看看如何使用MinimalAPI來開發一個web應用程式

入門

下面我們來看一下官方提供的MinimalAPI是如何使用的

  1. 新建ASP.NET Core 空專案Assignment.MinimalApiDemo
dotnet new web -o Assignment.MinimalApiDemo
cd Assignment.MinimalApiDemo
  1. 增加一個Get請求,修改Program
app.MapGet("/test", () => "Test Success!");

根據需求,自行增加Get (MapGet)、Post (MapPost)、Put (MapPut)、Delete (MapDelete)方法即可,完整程式碼如下:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/test", () => "Test Success!");

Masa版MinimalAPI

隨著我們的服務變得越來越多,這些服務全部被堆積在Program中,這樣豈不是變成流水賬式的程式碼?那怎麼做才能使得我們的程式碼更加美觀呢?

下面我們就來看一下Masa提供的MinimalAPIs是如何來使用的

  1. 選中專案Assignment.MinimalApiDemo,並安裝Masa.Contrib.Service.MinimalAPIs
dotnet add package Masa.Contrib.Service.MinimalAPIs --version 0.6.0-preview.13
  1. 註冊Masa版的MinimalAPI,修改Program
var app = builder.AddServices();
  1. 新增加一個使用者的服務,新增UserService
public class UserService : ServiceBase
{
    public IResult Add(RegisterUserRequest request)
    {
        //模擬新增使用者
        return Results.Ok();
    }
}

到這裡已經結束了,可能會有小夥伴十分的疑惑,Masa提供的方案讓我有點摸不著頭腦,但專案執行後就會發現在Swagger上多了一個服務

細心的小夥伴發現了,這個服務好像是我們新增的新增使用者服務,但連結地址為什麼是api/v1/Users