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

다른 카테고리

샘플 데이터 및 필터링 - C#에서 샘플 API 구축

Tim Corey
42분 43초

오늘날 웹 개발에서 중요한 도구 중 하나는 샘플 웹 API입니다. 이를 통해 프런트엔드 웹 앱, 모바일 기기 또는 소프트웨어 애플리케이션까지 테스트할 수 있습니다. Tim Corey는 " 샘플 데이터 및 필터링 - C#으로 샘플 API 구축 "이라는 제목의 상세한 비디오에서 JSON 파일에서 샘플 데이터를 로드하고, 필터링을 설정하고, Docker 컨테이너 또는 기존 웹 애플리케이션으로 배포할 수 있도록 준비하는 C# 웹 API를 만드는 과정을 안내합니다.

이 글에서는 Tim의 접근 방식을 단계별로 살펴보고 ASP.NET Core Web API, 최소 API 및 HTTP 서비스의 핵심 개념을 설명합니다.

샘플 웹 API 소개

팀은 개발자에게 새로운 웹 API 프로젝트를 만드는 것이 왜 그렇게 중요한지 설명하면서 이야기를 시작합니다. 모바일 기기용 앱, 웹 앱 또는 기타 소프트웨어 애플리케이션을 개발하든 관계없이, 간편한 샘플 API를 사용하면 테스트가 더 빠르고 원활하게 진행됩니다.

팀은 프로젝트가 끝날 무렵에는 다음과 같은 결과가 나올 것이라고 말합니다.

  • ASP.NET Core 및 .NET Core 사용한 최소한의 API,

  • OpenAPI(Swagger UI)를 지원하는 문서화된 API,

건강 검진,

  • 모의 오류 및 속도 저하,

  • Docker 컨테이너 및 VPS 서버에 배포합니다.

이 소규모 프로젝트를 통해 개발자는 GET, PUT, POST, DELETE와 같은 HTTP 메서드를 사용하여 HTTP 서비스와 쉽게 상호 작용할 수 있습니다.

프로젝트 및 샘플 데이터 설정

팀은 마이크로소프트의 인기 있는 통합 개발 환경인 Visual Studio 내에서 웹 API 프로젝트의 구조를 설계하는 것으로 시작합니다.

1시 7분에 Tim은 새 Data 폴더를 만들고 courseData.json 파일을 추가합니다. 그는 자신의 실제 웹사이트인 timcorey.com도 비슷한 시스템을 사용한다고 언급합니다. 즉, 웹 서비스 역할을 하는 큰 JSON 파일이 백그라운드에서 작동한다는 것입니다.

Tim의 장비 구성에서 핵심적인 사항:

  • 데이터베이스나 Entity Framework를 사용하지 않으려면 샘플 데이터에 JSON 파일을 사용하세요.

  • SQL 서버와 같은 추가 서비스를 제공하지 않음으로써 컨테이너 크기를 작게 유지하세요.

  • 데이터는 변경 불가능하므로 변경 사항을 저장할 필요가 없습니다. 필요할 때 데이터를 재설정하기만 하면 됩니다.

이러한 선택은 기존 자원을 활용하는 REST(Representational State Transfer) 원칙을 반영합니다.

강좌 데이터 구조 이해하기

팀은 샘플 JSON 파일의 구조를 꼼꼼히 살펴봅니다.

  • ID(정수),

  • 선주문(부울),

  • 강좌 URL(문자열)

  • 코스 유형 (문자열)

  • 이름, 수업 횟수, 수업 기간(시간)(숫자)

  • 설명, 이미지 URL,

  • 가격은 미국 달러 기준입니다.

  • 미리보기 링크.

팀은 3분 29초에 모든 가격이 미국 달러를 기준으로 한다고 설명합니다. 하지만 지방세(부가가치세)가 최종 가격에 영향을 미칠 수 있습니다.

이러한 필드 각각은 나중에 C#의 모델 클래스에 매핑되는데, 이는 ASP.NET 웹 API를 구축하는 데 있어 기본 요소입니다.

수업 모델 클래스 만들기

이제 .NET Core 코딩으로 넘어가서, Tim은 새로운 Models 폴더 안에 CourseModel.cs 파일을 생성합니다.

4분 47초에 그는 Visual Studio의 "붙여넣기 옵션 > JSON을 클래스로 붙여넣기"를 사용하여 JSON 구조를 기반으로 클래스를 즉시 생성합니다. 팀이 지적합니다:

  • 올바른 PascalCase 명명 규칙 준수 (C# 웹 API에 중요)

  • 필수 문자열과 null 허용 문자열 (6:02)

  • 빈 문자열로 충분한 경우 null 값을 저장하지 않도록 합니다.

클라이언트와 서버 간의 데이터 통신을 가능하게 하려면 강력한 모델 클래스를 만드는 것이 매우 중요합니다.

데이터를 메모리에 로드 중

Tim은 이어서 코스 목록을 메모리에 로드하는 것을 관리하는 CourseData.cs 클래스를 생성합니다.

주요 단계:

  • 역직렬화에는 System.Text.Json을 사용하십시오.

  • PropertyNameCaseInsensitive = true (8:04)로 설정하여 camelCase JSON을 PascalCase C# 필드에 매핑합니다.

  • 플랫폼 간 파일 접근을 위해 Path.Combine(9:04)을 사용하세요.

  • Linux 서버를 다룰 ​​때는 대소문자를 구분해야 합니다(9:59).

강좌들은 공개 목록에 등록됩니다.이 속성은 데이터베이스에 반복적으로 접근하지 않고도 빠른 접근을 보장합니다.

Tim은 11시 4분에 역직렬화가 실패할 경우 null 참조 오류를 방지하기 위해 새로운 빈 목록이 생성된다고 강조합니다. 이는 견고한 API를 구축할 때 권장되는 모범 사례입니다.

의존성 주입에 코스 데이터 등록하기

다음으로 Tim은 서비스 컨테이너에서 AddTransient를 사용하여 CourseData 클래스를 등록하는 방법을 보여줍니다.

그는 데이터가 읽기 전용이더라도 임시 서비스를 사용하면 실수로 데이터가 수정되는 문제를 방지할 수 있다고 설명합니다. 이 접근 방식은 최신 ASP.NET Core 웹 API 개발 표준과 일치합니다.

코스 엔드포인트 생성

오후 2시 3분, 팀은 샘플 API용 엔드포인트 구축을 시작합니다.

  • /courses에서 모든 강좌를 검색하는 GET 메서드,

  • 더 깔끔한 코드를 위한 AddCourseEndpoints 확장 메서드입니다.

이 모듈식 접근 방식은 웹 API 프로젝트의 확장을 간소화합니다. 이는 대규모 HTTP 서비스 또는 여러 엔드포인트를 관리할 때 필수적인 기술입니다.

Building A Sample Api In Csharp 1 related to 코스 엔드포인트 생성

Tim은 또한 테스트가 쉽도록 실행 URL을 Swagger UI로 설정했습니다.

문제 해결: 데이터 유형 불일치

Tim은 새로운 엔드포인트를 테스트하는 동안 CourseLengthInHours 필드와 관련된 상태 코드 오류를 발견했습니다. 그는 일부 과목은 소수점 단위(예: 2.5)로 학점이 매겨져 있어, 중간 학점 대신 두 배의 학점이 필요하다는 것을 깨달았습니다.

Tim은 CourseModel을 수정하여 외부 웹 리소스를 사용할 때 철저한 오류 검사와 데이터 유형 준수의 중요성을 보여줍니다.

ID 조회를 통해 API 개선

Tim은 기능을 확장합니다.

  • LoadAllCourses를 사용하여 모든 강좌를 불러옵니다.

  • LoadCourseById를 사용하여 ID로 강좌를 찾을 수 있습니다.

그는 강좌가 존재하는지 확인하는 방식으로 오류 처리를 개선합니다. 그렇지 않으면 Tim은 return NotFound()를 사용하여 클라이언트에 적절한 HTTP 상태 코드를 반환합니다.

이는 각 HTTP 메서드가 작업 결과를 명확하게 전달하는 RESTful 아키텍처 스타일 관행과 일치합니다.

강좌 유형별 필터링 및 검색 기능 추가

단순한 GET 메서드만으로는 충분하지 않습니다. 진정한 웹 서비스에는 필터링 기능이 필요합니다.

Tim은 LoadAllCourses 함수가 쿼리 매개변수를 허용하도록 개선했습니다.

  • 코스 유형(문자열),

  • 검색(문자열).

그는 String.IsNullOrWhiteSpace를 사용하여 선택적 매개변수를 안전하게 처리하는 방법을 설명합니다.

courseType으로 필터링할 때는 대소문자를 구분하지 않고 String.Compare를 사용하여 RemoveAll을 사용합니다. 강좌 이름과 간단한 설명을 검색할 때는 대소문자를 구분하지 않는 비교를 사용하는 .Contains 기능을 활용합니다.

팀은 다음과 같은 시나리오를 테스트합니다.

  • "석사 과정"으로 필터링

  • "웹" 또는 "SQL"을 검색하세요

  • 더욱 정확한 검색 결과를 위해 검색어와 강좌 유형을 조합합니다.

이 기능은 웹 앱, 모바일 앱 또는 HTTP를 통해 통신하는 클라이언트 등 다양한 환경에서 사용자에게 완전한 상호작용 경험을 제공합니다. 더 자세한 내용은 전체 영상 을 참조하십시오.

마무리 생각 및 향후 계획

수업이 끝날 무렵, 팀은 다음과 같은 결과물을 만들어냈습니다.

  • 정상적으로 작동하는 ASP.NET Core 웹 API,

필터링 및 검색 기능

  • 적절한 오류 처리 (NotFound, Ok 등)

  • Swagger UI 및 OpenAPI 문서화 지원.

팀은 다음 단계로 인터넷 클라이언트와 다양한 도메인이 API에 자유롭게 접근할 수 있도록 하는 데 필수적인 CORS(Cross-Origin Resource Sharing) 문제를 다룰 것이라고 예고했습니다.

팀은 마지막으로 격려의 말을 전했습니다. 프로그래밍에는 때때로 어려움이 따르지만, 그만큼 보람 있는 일이라는 것입니다.

결론

Tim Corey의 비디오를 따라하면 Visual Studio에서 새 웹 API 프로젝트를 만들고, 샘플 데이터를 로드하고, 엔드포인트를 구축하고, 강력한 필터링 기능을 구현할 수 있습니다. 이 모든 작업은 RESTful 원칙과 ASP.NET Core 표준을 기반으로 합니다.

웹 페이지를 테스트하든, 모바일 기기용 API를 구축하든, 기존 리소스를 활용하든, 이 설정은 HTTP 메서드를 통해 데이터에 빠르고 안정적으로 액세스할 수 있도록 보장합니다.

.NET Core 에서 이러한 패턴을 계속 연습하면 곧 클라이언트, 서버 및 인터넷 간에 원활하게 통신하는 견고한 웹 서비스를 만들 수 있을 것입니다!

Hero Worlddot related to 샘플 데이터 및 필터링 - C#에서 샘플 API 구축
Hero Affiliate related to 샘플 데이터 및 필터링 - C#에서 샘플 API 구축

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

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

아이언 서포트 팀

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