FastEndpoints: ASP.NET Minimal API를 기반으로 만든 새로운 대안

ASP.NET에 새롭게 도입된 minimal API도 충분히 훌륭하지만, 좀 더 쓰기 편하고 다양한 기능을 지원하는 대안을 찾고 계신다면 FastEndpoints를 한 번 둘러보셔도 좋을 것 같습니다. 기존 ASP.NET 에코시스템의 모든 기능을 수용하면서 불편한 점을 개선한 새로운 대안입니다. :+1:

FastEndpoints에는 여러가지 다양한 기능들이 제공되지만, 개인적으로 눈길을 끄는 부분은 실제로 웹 API를 개발하면서 마주하게 되는 반복적인 부분들 - 글로벌 예외 처리, Swagger UI 기반 API 시각화 등을 "엔드포인트"라는 개념으로 정의해서 체계적으로 코드를 작성할 수 있게 해준다는 점입니다.

자세한 핸즈온 아티클도 읽어보시면 좋을 것 같습니다.

9개의 좋아요

최근 프로젝트 하면서 사용이 어렵겠다는 생각이 들었는데 이유가
dotnet 9의 Microsoft.AspNetCore.OpenApi 를 아직 지원하지 않는걸로

1개의 좋아요

‘MediatR 이랑 비슷한거 아닌가?’ 라고 생각했는데

확실히 더 Presentation 레이어에 가까운 기능들을 지원하는군요.

public class MyEndpoint : Endpoint<MyRequest, 
                                   Results<Ok<MyResponse>, 
                                           NotFound, 
                                           ProblemDetails>>
{
    public override void Configure() { ... }

    public override async Task<Results<Ok<MyResponse>, NotFound, ProblemDetails>> ExecuteAsync(
        MyRequest req, CancellationToken ct)
    {
        await Task.CompletedTask; //simulate async work

        if (req.Id == 0) //condition for a not found response
        {
            return TypedResults.NotFound();
        }

        if (req.Id == 1) //condition for a problem details response
        {
            AddError(r => r.Id, "value has to be greater than 1");
            return new FastEndpoints.ProblemDetails(ValidationFailures);
        }

        // 200 ok response with a DTO
        return TypedResults.Ok(new MyResponse
        {
            RequestedId = req.Id
        });
    }
}

엔드포인트의 타입 반환을 IActionResult + Attribute

덕지덕지 표현하는게 아니라

명시적으로 반환하는게 참 좋네요.

꽤나 매력적인거 같습니다.

2개의 좋아요