푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 애플리케이션
C# 애플리케이션

다른 카테고리

Postman Clone 구축: API 호출을 위한 클래스 라이브러리 설계

Tim Corey
47m 58s

API는 현대 응용 프로그램 개발의 중심에 있으며, 이를 테스트하고 상호 작용할 수 있는 올바른 도구가 필수적입니다. Tim Corey의 비디오 "Class Library Design: Building a Postman Clone"는 데스크톱 기반의 Postman 클론을 단계별로 만들어 가는 과정을 안내합니다.

이 기사에서는 Tim Corey가 비디오에서 보여주는 상세한 접근 방식을 통해 Postman 클론을 만드는 방법을 탐구합니다. Tim은 우리의 응용 프로그램에서 API 호출을 처리하는 클래스 라이브러리를 만드는 과정을 단계별로 안내합니다. 결국 우리는 Postman 클론의 작동 가능한 MVP(최소 기능 제품) 버전을 갖게 될 것입니다.

이 과정은 초보자 친화적이지만 자체 Postman 또는 유사한 응용 프로그램을 만들고자 하는 개발자에게 유용한 주요 프로그래밍 원칙을 보여줍니다. 과정에 대해 깊이 알아봅시다.

소개 및 설정

Tim은 이 강의의 목표가 응용 프로그램에서 API 호출을 작동시키기 위한 비즈니스 로직과 데이터 액세스 계층을 만드는 것이라고 설명하며 시작합니다. 그는 이것이 나중에 확장할 수 있는 기능적 버전인 MVP임을 강조합니다.

코딩에 진입하기 전에 Tim은 이 코스가 포트폴리오에 친화적이도록 설계되었음을 언급하지만 프로젝트를 직접 복사하지 않도록 경고합니다. 대신 그는 개발자들에게 C#, API 상호 작용 및 UI 디자인에 대한 기술을 입증할 수 있는 독창적인 프로젝트를 만들도록 영감을 얻을 것을 권장합니다.

API 액세스 클래스 만들기

Tim은 클래스 라이브러리를 열고 새 페이지를 시작하는 과정을 안내합니다. 그는 기본 Class1을 삭제하고 APIAccess라는 새 클래스를 만듭니다. 이 클래스는 모든 API 상호 작용을 처리합니다.

그는 메소드 설계 접근 방식을 설명합니다: public void 메소드로 시작하여 string url과 같은 매개 변수를 추가한 다음 실세계 API 요청을 처리할 수 있는 비동기 작업으로 점진적으로 정제합니다.

public class APIAccess
{
private readonly HttpClient client = new();

public async Task<string> CallApiAsync(string url)
    {
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
        {
return await response.Content.ReadAsStringAsync();
        }
return "error: {response.StatusCode}";
    }
}

Tim은 각 호출마다 새로 초기화하지 않고 단일 HTTP 클라이언트 인스턴스를 생성함으로써 성능을 향상시킵니다.

API 응답 처리하기

HTTP 클라이언트가 자리잡으면 Tim은 API 호출로부터 응답을 검색하는 방법을 보여줍니다. 그는 이벤트 핸들러를 제외하고는 async void 대신 Task을 반환하는 것이 중요하다고 강조합니다.

이를 위해 Tim은 게시물, 댓글 및 할 일과 같은 가짜 데이터를 제공하는 JSON Placeholder의 샘플 API를 사용합니다. 그는 API URL을 UI 양식 HTML에 붙여넣고 response HTML 또는 JSON을 표시하기 위해 results.Text 필드를 사용합니다.

results.Text = await api.CallApiAsync(apiText.Text);

Tim은 원시 JSON 출력이 컴퓨터에 읽을 수 있지만 사용자에게 친숙하지 않기 때문에 다음 단계로 나아갑니다: JSON 형식화.

JSON 출력 형식화

Tim은 JsonSerializer를 사용하여 응답 JSON을 더 읽기 쉽게 만드는 방법을 보여줍니다:

var jsonElement = JsonSerializer.Deserialize<JsonElement>(responseJson);
var prettyJson = JsonSerializer.Serialize(jsonElement, new JsonSerializerOptions { WriteIndented = true });

이로 인해 개발자는 UI에서 예쁜 JSON을 표시할 수 있어 JSON 텍스트 편집기에서 읽기 쉽거나 엔드포인트를 테스트할 때 도움이 됩니다. Tim은 또한 raw 출력 및 형식화 출력 사이를 전환할 수 있는 옵션을 추가하여 유연성을 제공합니다. 데이터가 UI에 표시될지 프로그래밍적으로 처리될지에 따라 다릅니다.

미래 확장을 위한 준비

MVP가 GET 요청만 지원하더라도, Tim은 POST, PATCH, PUT 및 DELETE와 같은 다른 HTTP 동작을 계획하는 방법을 보여줍니다. 그는 GET의 기본값을 가진 HTTPAction이라는 enum을 생성하여 기존 메소드를 다시 작성하지 않고 코드를 확장합니다.

public enum HTTPAction
{
GET
}

이러한 미래 지향적인 설계는 유지보수하면서 확장 가능한 Postman 클론을 구축하고자 하는 개발자에게 훌륭한 실습 사례입니다.

URL 검증

Tim은 사용자가 유효한 HTTPS 엔드포인트만 제공하도록 하기 위해 URL 검증 메소드를 소개합니다:

public bool IsValidURL(string url)
{
if (string.IsNullOrWhiteSpace(url)) return false;
return Uri.TryCreate(url, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps;
}

그는 사용자 입력을 절대 신뢰하지 말고 검증이 필요한 경우 여러 번 확인해야 한다고 설명합니다. 이것은 응용 프로그램이 잘못된 URL로 인해 중단되지 않도록 하고 오류 메시지가 작업 흐름을 방해하지 않도록 합니다.

UI와의 API 액세스 통합

검증이 완료되면 Tim은 API 액세스를 대시보드 UI와 통합하는 방법을 보여줍니다:

  1. APIAccess 클래스를 인스턴스화합니다.

  2. URL을 검증합니다.

  3. 응답 JSON을 결과 텍스트 편집기에 표시합니다.

  4. 잘못된 요청이나 실패한 요청에 대한 의미 있는 오류 메시지를 표시합니다.
if (!api.IsValidURL(apiText.Text))
{
systemStatus.Text = "Invalid URL";
results.Text = string.Empty;
return;
}
results.Text = await api.CallApiAsync(apiText.Text);

Tim은 청결한 UI 설계의 중요성을 강조하며, 각 요청을 빈 결과 영역으로 시작하고 성공 또는 실패에 따라 시스템 상태를 업데이트합니다.

의존성 주입 및 단위 테스트를 위한 인터페이스 사용

Tim은 IAPIAccess라는 APIAccess의 인터페이스를 소개합니다. 이것은 단위 테스트 및 의존성 주입을 위한 코드를 준비하는 최고의 실습 방법입니다:

public interface IAPIAccess
{
Task<string> CallApiAsync(string url);
bool IsValidURL(string url);
}

구체 클래스보다 인터페이스를 기준으로 코딩함으로써 개발자는 테스트를 위해 구현을 교체하거나 UI나 다른 종속 코드를 변경하지 않고 API 로직을 업그레이드할 수 있습니다. Tim은 이것이 MVP에 비해 약간 과하지만, 향후 응용 프로그램 향상에 가치가 있다고 강조합니다.

응용 프로그램 테스트 및 실행

모든 구성 요소가 준비되면 Tim은 Windows에서 응용 프로그램을 실행하고 JSON Placeholder URL을 붙여넣고 형식화된 JSON 응답을 성공적으로 표시합니다. 그는 잘못된 URL이 어떻게 제대로 거부되는지를 보여주어 사용자 입력 오류에도 불구하고 앱이 견고함을 보장합니다.

이는 GET 요청을 하고 입력을 검증하며 사용자 친화적인 형식으로 응답을 표시할 수 있는 기능적 Postman 클론을 형성합니다.

다음 단계: 포트폴리오와 GitHub 통합

Tim은 이 프로젝트를 포트폴리오 준비 항목으로 만드는 것이 중요하다고 강조하면서 수업을 마무리합니다. 그는 다음을 제안합니다:

  • 프로젝트를 위한 GitHub 저장소 생성.

  • 응용 프로그램을 설명하는 명확한 README 추가.

  • 다른 사람들이 테스트할 수 있는 다운로드 가능한 실행 파일 포함.

  • UI 및 기능을 스크린샷이나 GIF로 강조 표시.

  • 과정, 설정 및 코드 구조 문서화.

그는 자신의 코드를 단순히 복사하여 업로드하는 것을 경고합니다. 대신, 개발자는 자신의 스타일과 기술을 반영하는 자체 Postman 클론 또는 유사 앱을 만들기 위해 이 수업을 사용해야 합니다.

이 접근 방식을 따름으로써 개발자는 코딩 능력뿐만 아니라 소프트웨어 프로젝트를 탐구하고 업데이트하고 유지할 수 있는 능력을 입증하여 잠재적인 고용주에게 매우 소중합니다.

결론

Tim Corey의 비디오는 처음부터 Postman 클론 구축에 대한 종합적인 가이드를 제공합니다. 클래스 라이브러리 설정에서 API 호출 처리, JSON 응답 형식화, 입력 검증, 인터페이스 및 의존성 주입을 통해 프로젝트를 향후 확장을 위해 준비하는 과정을 이 강의는 전체 응용 프로그램 개발 과정을 다룹니다.

이 접근 방식을 따르면 개발자는 일반 C#을 사용하여 MVP Postman 클론을 만들고, 응답 HTML 또는 JSON을 표시하기 위한 UI 요소를 통합하고 포트폴리오에서 전시할 수 있는 GitHub 프로젝트를 준비할 수 있습니다. 이 단계별 방법론은 코드뿐만 아니라, 계획, 과정, 디자인 사고를 강조하며, 이는 전문 소프트웨어 개발자에게 중요한 기술입니다.

Hero Worlddot related to Postman Clone 구축: API 호출을 위한 클래스 라이브러리 설계
Hero Affiliate related to Postman Clone 구축: API 호출을 위한 클래스 라이브러리 설계

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해