既存のプロジェクトで「Masa MiniApi」を使用するにはどうすればよいですか?

まず、空のWebApiプロジェクト テンプレートを作成しました。このプロジェクト テンプレートMasaFramework自体には何の関係もありません。このブログMasaFrameworkでのみMiniApiパッケージを使用します。

  1. 作成したAsp.NET Core 空プロジェクトテンプレート

  1. プロジェクト名MFMiniApi

  1. その他の情報については、画像を参照するか、Https設定をキャンセルするか、次のいずれかを選択してください。

  1. これは空のプロジェクト テンプレートです

  2. インストールMasa MiniApi

    検索Masa.Contrib.Service.MinimalAPIs、選択に注意してください包括发行版1.0バージョンがリリースされていないため、最初にプレビュー バージョンを使用してください。

  1. インストールしてくださいSwagger

    検索Swashbuckle.AspNetCoreインストール

  2. 使用MasaMiniApi

    Program.csコードを変更する

    using Microsoft.OpenApi.Models;
    
    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddEndpointsApiExplorer();
    
    builder.Services.AddSwaggerGen(options =>
    {
        options.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
    });
    
    var app = builder.AddServices();
    
    app.UseSwagger();
    app.UseSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
    });
    
    await app.RunAsync();
    
    

    フォルダーを作成しServiceてから作成しますDemoService.cs

    内部コード:

    namespace MFMiniApi.Service;
    
    public class DemoService : ServiceBase
    {
        public string PostAsync()
        {
            return "成功了吗";
        }
    }
    
    
  3. MiniApiレジストリApiサービスを実装してプロジェクトを開始する

MasaMiniApi関数:

Minimal APIsMinimal APIs非常に軽量で、書き方も非常にシンプルですが、その分コーディング上の問題も発生するので、オリジナルの書き方とMasa提供されている書き方Minimal APIsの違いを見てみましょう。

ネイティブライティング

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/api/v1/users/{id}", (Guid id)=>
{
    // todo: 查询用户信息
    var user = new User()
    {
        Id = id,
        Name = "Tony"
    };
    return Task.FromResult(Results.Ok(user));
});

app.MapPost("/api/v1/users", ([FromBody] UserRequest request)=>
{
    //todo: 添加用户逻辑
    return Task.FromResult(Results.Accepted());
});

app.MapDelete("/api/v1/users/{id}",(Guid id)=>
{
    //todo: 删除用户逻辑
    return Task.FromResult(Results.Accepted());
});

app.MapPut("/api/v1/users/{id}",(Guid id, [FromBody] EditUserRequest request)=>
{
    //todo: 修改用户逻辑
    return Task.FromResult(Results.Accepted());
});

app.Run();

MasaMiniApi

作成UserService.cs、ユースケース自动注册

using Microsoft.AspNetCore.Mvc;

namespace MFMiniApi.Service;

public class UserService : ServiceBase
{
    /// <summary>
    /// Get: /api/v1/users/{id}
    /// </summary>
    public Task<IResult> GetAsync(Guid id)
    {
        // todo: 查询用户信息
        var user = new User()
        {
            Id = id,
            Name = "Tony"
        };
        return Task.FromResult(Results.Ok(user));
    }

    /// <summary>
    /// Post: /api/v1/users
    /// </summary>
    public Task<IResult> AddAsync([FromBody] UserRequest request)
    {
        //todo: 添加用户逻辑
        return Task.FromResult(Results.Accepted());
    }

    /// <summary>
    /// Delete: /api/v1/users/{id}
    /// </summary>
    public Task<IResult> DeleteAsync(Guid id)
    {
        //todo: 删除用户逻辑
        return Task.FromResult(Results.Accepted());
    }

    /// <summary>
    /// Put: /api/v1/users/{id}
    /// </summary>
    public Task<IResult> UpdateAsync(Guid id, [FromBody] EditUserRequest request)
    {
        //todo: 修改用户逻辑
        return Task.FromResult(Results.Accepted());
    }
}

UserService.cs、ユースケース手动注册

public class UserService : ServiceBase
{
    public UserService()
    {
        RouteOptions.DisableAutoMapRoute = true;//当前服务禁用自动注册路由

        App.MapGet("/api/v1/users/{id}", GetAsync);
        App.MapPost("/api/v1/users", AddAsync);
        App.MapDelete("/api/v1/users/{id}", DeleteAsync);
        App.MapPut("/api/v1/users/{id}", UpdateAsync);
    }

    public Task<IResult> GetAsync(Guid id)
    {
        // todo: 查询用户信息
        var user = new User()
        {
            Id = id,
            Name = "Tony"
        };
        return Task.FromResult(Results.Ok(user));
    }

    public Task<IResult> AddAsync([FromBody] UserRequest request)
    {
        //todo: 添加用户逻辑
        return Task.FromResult(Results.Accepted());
    }

    public Task<IResult> DeleteAsync(Guid id)
    {
        //todo: 删除用户逻辑
        return Task.FromResult(Results.Accepted());
    }

    public Task<IResult> UpdateAsync(Guid id, [FromBody] EditUserRequest request)
    {
        //todo: 修改用户逻辑
        return Task.FromResult(Results.Accepted());
    }
}

MasaMiniApiグローバル構成

パラメータ名 パラメータの説明 デフォルト
AutoMapRouteを無効にする 自動マップルーティングを無効にする false
プレフィックス 接頭語 api
バージョン バージョン v1
AutoAppendId ルートに {Id} が含まれていますか (例: /api/v1/user/) true
サービス名を複数形にする サービス名の複数化を有効にするかどうか true
プレフィックスの取得 現在のメソッドのタイプをGetリクエストとして識別するために使用されます new List<string> { "Get", "Select", "Find" }
ポストプレフィックス 現在のメソッドのタイプをPostリクエストとして識別するために使用されます new List<string> { "Post", "Add", "Upsert", "Create", "Insert" }
PutPrefixes 現在のメソッドのタイプをPutリクエストとして識別するために使用されます new List<string> { "Put", "Update", "Modify" }
プレフィックスの削除 現在のメソッドのタイプをDeleteリクエストとして識別するために使用されます new List<string> { "Delete", "Remove" }
DisableTrimMethodPrefix メソッドのプレフィックスの削除を無効にする (要求されたプレフィックスGetPost、の上)PutDelete 間違い
MapHttpMethodsForUnmatched メソッド名のプレフィックスによるリクエスト メソッドの一致に失敗した後、ルートは指定された HttpMethod を使用してリクエストを開始します。 サポートPostGet、このメソッドは Swagger ではサポートDeletePutれていないため、API を正常に表示できません
アセンブリ サービスのスキャンに使用されるアセンブリ MasaApp.GetAssemblies()(グローバル アセンブリ コレクション。デフォルトは現在のドメイン アセンブリ コレクションです)
ルートハンドラービルダー 委任に基づいて、権限認証やCORSなどRouteHandlerBuilderに使用できます。 null

インサービス構成

パラメータ名 パラメータの説明 デフォルト値 (null には割り当てられません)
BaseUri ルートアドレス
サービス名 サービス名
ルートハンドラービルダー RouteHandlerBuilder に基づく委任。権限認証やCORSなどに使用できます。
RouteOptions (オブジェクト) ローカルルーティング設定
AutoMapRouteを無効にする 自動マップルーティングを無効にする
プレフィックス 接頭語
バージョン バージョン
AutoAppendId ルートに {Id}font> を含めるかどうか (例: /api/v1/user/{id})
サービス名を複数形にする サービス名の複数化を有効にするかどうか
プレフィックスの取得 現在のメソッドのタイプをGetリクエストとして識別するために使用されます
ポストプレフィックス 現在のメソッドのタイプをPostリクエストとして識別するために使用されます
PutPrefixes 現在のメソッドのタイプをPutリクエストとして識別するために使用されます
プレフィックスの削除 現在のメソッドのタイプをDeleteリクエストとして識別するために使用されます
DisableTrimMethodPrefix メソッドのプレフィックスの削除を無効にする (要求されたプレフィックスGetPost、の上)PutDelete
MapHttpMethodsForUnmatched メソッド名プレフィックスによるリクエスト メソッドの一致に失敗した後、ルートは指定された HttpMethod を使用してリクエストを開始します。このメソッドは Swagger ではサポートされていないため、API は正常に表示できません。

MiniApi ドキュメント

MASA フレームワーク (masastack.com)

这是官方文档地址,MasaFramework提供了很多的包都没有存在什么强依赖,都可以单独拿到项目中使用,这也是我目前一直学习Masaframework的原因,

好了MasaMiniApi的使用案例介绍到这里

来自token的分享

技术交流群:737776595

おすすめ

転載: blog.csdn.net/xiaohucxy/article/details/130233530