ASP.NET에 새롭게 도입된 minimal API도 충분히 훌륭하지만, 좀 더 쓰기 편하고 다양한 기능을 지원하는 대안을 찾고 계신다면 FastEndpoints를 한 번 둘러보셔도 좋을 것 같습니다. 기존 ASP.NET 에코시스템의 모든 기능을 수용하면서 불편한 점을 개선한 새로운 대안입니다.
FastEndpoints에는 여러가지 다양한 기능들이 제공되지만, 개인적으로 눈길을 끄는 부분은 실제로 웹 API를 개발하면서 마주하게 되는 반복적인 부분들 - 글로벌 예외 처리, Swagger UI 기반 API 시각화 등을 "엔드포인트"라는 개념으로 정의해서 체계적으로 코드를 작성할 수 있게 해준다는 점입니다.
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
});
}
}