🚀 Kosol.net

Published

- 2 min read

How to create .net Minimal API

img of How to create .net Minimal API

Introduction

สำหรับคนที่อยากเปลี่ยนมาใช้ Mininal API แต่มี API จำนวนมาก และไม่อยากเขียน Code กองรวมกันที่ไฟล์ Program.cs สามารถใช้การสร้าง Interface ไว้ แล้ว Register Service ทุกตัวที่ Implement Interface นี้ได้จาก

   app.Services.GetServices<IAPI>();
  1. Create APIs Folder in server project.
   mkdir APIs
  1. Create Interface IAPI.cs file in /APIs folder
   // /APIs/IAPI.cs

namespace ProjectName.APIs;

public interface IAPI
{
    public void Register(WebApplication app);
}
  1. Create API with Implement IAPI Interface
   // /APIs/SampleAPI.cs

namespace ProjectName.APIs;

public class SampleAPI : IAPI
{
    const string path = "/api/sample";

    public void Register(WebApplication app)
    {
        app.MapGet(path, Get);
        app.MapGet($"{path}/{{id}}", GetByID);
        app.MapPost(path, Post);
        app.MapPut($"{path}/{{id}}", Put);
        app.MapDelete($"{path}/{{id}}", Delete);
    }
}
  1. Create Get, GetByID, Post, Put, Delete Method.
   // /APIs/SampleAPI.cs
public class SampleAPI : IAPI
{
    // ...

    async Task<IResult> Get(/* params */)
    {
        // ...
        return Results.Ok(data);
    }

    async Task<IResult> GetById(long id, /* params */)
    {
        // ...
        return Results.Ok(data);
    }

    async Task<IResult> Post(/* params */)
    {
        // ...
        return Results.Created($"{path}/{id}", data);
    }

    async Task<IResult> Put(long id, /* params */)
    {
        // ...
        return Results.Accepted($"{path}/{id}", data);
    }

    async Task<IResult> Delete(long id, /* params */)
    {
        // ...
        return Results.NoContent();
    }
}
  1. Register Service in Program.cs
   // /Program.cs
// ...

builder.Services.AddTransient<IAPI, SampleAPI>();

var app = builder.Build();
// ...

ห้ามลืม กรณีมีการเพิ่ม Class XxxAPI ใหม่เข้ามาต้องนำมาเพิ่มที่นี่ด้วยทุกครั้ง

  1. Call GetService() and call each api.Register(app)
   // /Program.cs in server project.
// ...

var apis = app.Services.GetServices<IAPI>();

foreach (var api in apis)
{
    if (api is null) throw new InvalidProgramException("API not found");
    api.Register(app);
}
// ...
app.Run();

เพียงเท่าที่คุณก็จะสามารถสร้าง API จำนวนมากได้ โดยไม่ต้องกองทุกสิ่งอย่างไว้ที่ Program.cs แล้ว