프로젝트 소개

Refit는 현대적인 .NET을 위한 자동 타입 안전 REST 라이브러리로, Square의 Retrofit에서 큰 영감을 받았습니다. 이 라이브러리는 REST API 정의를 살아있는 인터페이스로 변환하여, 개발자가 HTTP 메서드 속성과 함께 C# 인터페이스로 API 계약을 정의하면 Refit가 HttpClient를 사용하여 호출을 수행하는 구현을 생성하도록 합니다. 이 라이브러리는 WinUI, .NET Framework 4.6.2+, .NET 8/9/10/11, Blazor, Uno Platform 등 여러 플랫폼을 지원합니다. 빌드 시점에 클라이언트를 생성하는 Roslyn 소스 생성기를 탑재하고 있어 런타임 리플렉션을 줄이고 트리밍된 애플리케이션 및 Native AOT 지원을 가능하게 합니다. 주요 기능은 다음과 같습니다: - .NET 5 이상에서 자동 클라이언트 등록을 지원하는 소스 생성 - Get, Post, Put, Delete, Patch, Head HTTP 메서드 지원 - 객체 평탄화 및 컬렉션 포맷팅을 포함한 동적 쿼리 문자열 파라미터 - JSON, JSON Lines, XML, 폼 게시물을 위한 바디 콘텐츠 지원 - Bearer 인증을 포함한 정적 및 동적 요청 헤더 - 다양한 파트 유형의 멀티파트 업로드 - 요청별 타임아웃 및 취소 토큰 지원 - 인터페이스 상속 및 여러 API의 조합 - 기본 인터페이스 메서드 - 의존성 주입을 위한 HttpClientFactory 통합 - 사용자 정의 HttpClient 지원 - ApiException 및 사용자 정의 예외 팩토리를 통한 포괄적인 예외 처리 - 선언적 라우트 테이블을 통한 Refit.Testing 패키지의 테스트 지원 소스 생성기는 경로 파라미터, 별칭 및 포맷팅이 있는 쿼리 파라미터, 바디 콘텐츠, 헤더, 멀티파트 업로드, 속성 및 스트림 응답을 위한 IAsyncEnumerable을 포함한 다양한 응답 유형을 비롯한 대부분의 요청 형태를 다룹니다. 생성기가 생성할 수 없는 형태에 대해서는 메서드가 런타임 리플렉션 요청 빌더로 폴백됩니다. Refit는 컴파일 타임에 잘못된 라우트 템플릿, 여러 CancellationToken 파라미터, 잘못된 HeaderCollection 유형 등의 일반적인 인터페이스 문제를 플래그 표시하는 분석기도 제공합니다. 기계적 수정을 위한 코드 수정도 포함됩니다. 이 라이브러리는 Refit(코어), Refit.HttpClientFactory(DI 통합), Refit.Newtonsoft.Json(JSON.NET 지원), Refit.Testing(테스트 유틸리티), Refit.Reflection(구형 빌드 도구를 위한 런타임 리플렉션 폴백) 등 여러 NuGet 패키지를 제공합니다.