연습 - 웹 API 프로젝트 만들기
이 모듈에서는 .NET 8.0 SDK를 사용합니다. 기본 설정 터미널에서 다음 명령을 실행하여 .NET 8.0이 설치되어 있는지 확인합니다.
dotnet --list-sdks
다음 예제와 유사한 출력이 표시됩니다.
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
8
으로 시작하는 버전이 나열되어 있는지 확인합니다. 나열되는 버전이 없거나 명령을 찾을 수 없는 경우 최신 .NET 8.0 SDK를 설치합니다.
웹 API 프로젝트 만들기 및 살펴보기
.NET 프로젝트에서 웹 API를 사용하도록 설정하기 위해 Visual Studio Code를 사용합니다. Visual Studio Code에는 쉽게 새 프로젝트를 만드는 통합 터미널이 포함되어 있습니다. 다른 코드 편집기를 사용하지 않으려면 이 모듈의 명령을 터미널에서 실행할 수 있습니다.
Visual Studio Code에서 파일>폴더 열기를 차례로 선택합니다.
원하는 위치에 ContosoPizza라는 새 폴더를 만든 다음 폴더 선택을 선택합니다.
주 메뉴에서 보기>터미널을 선택하여 Visual Studio Code에서 통합 터미널을 엽니다.
터미널 창에 다음 명령을 복사하고 붙여넣습니다.
dotnet new webapi -controllers -f net8.0
이 명령은 날씨 예측 목록을 반환하는 ContosoPizza.csproj라는 C# 프로젝트 파일과 함께 컨트롤러를 사용하는 기본 웹 API 프로젝트용 파일을 만듭니다. 오류가 발생하면 .NET 8 SDK가 설치되어 있는지 확인합니다.
Important
Web API 프로젝트는 기본적으로
https
로 보호됩니다. 문제가 있는 경우 ASP.NET Core HTTPS 개발 인증서를 구성합니다.Visual Studio Code에서 프로젝트를 디버그하기 위해 자산을 추가하라는 프롬프트가 표시될 수 있습니다. 대화 상자에서 예를 선택합니다.
이 명령은 webapi이라는 별칭의 ASP.NET Core 프로젝트 템플릿을 사용하여 C# 기반 웹 API 프로젝트를 스캐폴드합니다. ContosoPizza 디렉터리가 만들어집니다. 이 디렉터리에는 .NET에서 실행되는 ASP.NET Core 프로젝트가 포함되어 있습니다. 프로젝트 이름이 ContosoPizza 디렉터리 이름과 일치합니다.
이제 다음 파일 및 디렉터리에 액세스할 수 있습니다.
-| Controllers -| obj -| Properties -| appsettings.Development.json -| appsettings.json -| ContosoPizza.csproj -| ContosoPizza.http -| Program.cs -| WeatherForecast.cs
다음 파일과 디렉터리를 검사합니다.
이름 설명 Controllers/ HTTP 엔드포인트로 노출되는 공용 메서드가 있는 클래스를 포함합니다. Program.cs 애플리케이션의 관리되는 진입점을 포함하는 서비스와 앱의 HTTP 요청 파이프라인을 구성합니다. ContosoPizza.csproj 프로젝트에 대한 구성 메타데이터를 포함합니다. ContosoPizza.http Visual Studio Code에서 직접 REST API를 테스트하기 위한 구성이 포함되어 있습니다.
웹 API를 빌드 및 테스트
명령 셸에서 다음 .NET Core CLI 명령을 실행합니다.
dotnet run
이전 명령:
- 현재 디렉터리에 있는 프로젝트 파일을 찾습니다.
- 이 프로젝트에 필요한 프로젝트 종속성을 검색하여 설치합니다.
- 프로젝트 코드를 컴파일합니다.
- HTTP 및 HTTPS 엔드포인트 모두에서 ASP.NET Core의 Kestrel 웹 서버를 사용하여 웹 API를 호스팅합니다.
프로젝트 만들 때 HTTP의 경우 5000~5300, HTTPS의 경우 7000~7300 사이의 포트가 선택됩니다. 개발 중에 사용하는 포트는 프로젝트의 launchSettings.json 파일을 수정하여 쉽게 변경할 수 있습니다. 이 모듈은
https
로 시작하는 보안localhost
URL을 사용합니다.앱이 실행 중임을 나타내는 다음과 유사한 출력이 표시되어야 합니다.
Building... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:7294 info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5118 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development
컴퓨터에서 이 앱을 실행하는 경우 브라우저를 출력에 표시된 HTTPS 링크(앞의 경우
https://localhost:7294
)로 이동하여 결과 페이지를 볼 수 있습니다. 이 포트는{PORT}
가 사용되는 모듈 전체에서 사용하므로 기억해 두세요.Important
예기치 않은 동작이 발생하면 터미널 출력을 확인합니다. 빌드가 실패하거나 다른 오류가 발생하면 로그 파일의 정보가 문제 해결에 도움이 됩니다. 코드를 변경할 때 키보드에서 CTRL+C를 선택하고
dotnet run
명령을 다시 실행하여 웹 API를 중지해야 합니다.웹 브라우저를 열고 다음으로 이동합니다.
https://localhost:{PORT}/weatherforecast
이 예와 유사한 JSON 출력이 표시됩니다.
[ { "date": "2021-11-09T20:36:01.4678814+00:00", "temperatureC": 33, "temperatureF": 91, "summary": "Scorching" }, { "date": "2021-11-09T20:36:01.4682337+00:00", "temperatureC": -8, "temperatureF": 18, "summary": "Cool" }, // ... ]
선택 사항: .http
파일로 탐색
프로젝트에는 표준 형식을 통해 API 엔드포인트를 테스트하는 데 사용되는 파일인 ContosoPizza.http가 포함되어 있습니다. .http
파일은 Visual Studio를 포함한 여러 IDE(통합 개발 환경) 및 REST 클라이언트 확장이 설치된 Visual Studio Code 내부에서 지원됩니다.
ContosoPizza.http 파일을 엽니다.
일부 IDE에서 이 파일은 @ContosoPizza_HostAddress 변수와 application/json을 허용하는 /weatherforecast/를 호출하는 GET 명령으로 미리 구성되어 있습니다.
파일에 있는 경우 실행 중인 서비스에 요청을 보내는 GET 위에 있는 보낸 요청 명령을 선택합니다.
이 명령을 호출하면 브라우저에서 본 것과 유사한 출력이 포함된 응답 창이 열립니다.
HTTP/1.1 200 OK Connection: close Content-Type: application/json; charset=utf-8 Date: Wed, 17 Jan 2024 16:46:40 GMT Server: Kestrel Transfer-Encoding: chunked [ { "date": "2024-01-18", "temperatureC": -2, "temperatureF": 29, "summary": "Warm" }, { "date": "2024-01-19", "temperatureC": 24, "temperatureF": 75, "summary": "Chilly" }, // .. ]
선택 사항: 명령줄 HTTP REPL로 API 살펴보기
주 메뉴에서 터미널>새 터미널을 선택하여 Visual Studio Code의 새 통합 터미널을 열고 다음 명령을 실행합니다.
dotnet tool install -g Microsoft.dotnet-httprepl
앞의 명령은 웹 API에 대한 HTTP 요청을 하는 데 사용할 .NET HTTP REPL 명령줄 도구를 설치합니다.
다음 명령을 실행하여 웹 API에 연결합니다.
httprepl https://localhost:{PORT}
또는
HttpRepl
이 실행 중인 동안 언제든지 다음 명령을 실행합니다.connect https://localhost:{PORT}
팁
HttpRepl
도구에서 OpenAPI 설명을 찾을 수 없음을 경고하는 경우 가장 가능성이 높은 원인은 신뢰할 수 없는 개발 인증서입니다.HttpRepl
은 신뢰할 수 있는 연결이 필요합니다. 계속하기 전에 반드시dotnet dev-certs https --trust
을(를) 사용하여 개발 인증서를 신뢰하도록 시스템을 구성해야 합니다.다음 명령을 실행하여 사용 가능한 엔드포인트를 탐색합니다.
ls
앞의 명령은 연결된 엔드포인트에서 사용 가능한 모든 API를 검색하고 다음 출력과 같이 나열합니다.
https://localhost:{PORT}/> ls . [] WeatherForecast [GET]
다음 명령을 실행하여
WeatherForecast
엔드포인트로 이동합니다.cd WeatherForecast
앞의 명령은
WeatherForecast
엔드포인트에 대해 사용 가능한 API의 출력을 보여줍니다.https://localhost:{PORT}/> cd WeatherForecast /WeatherForecast [GET]
다음 명령을 사용하여
HttpRepl
에서GET
요청을 합니다.get
앞의 명령은 브라우저에서 엔드포인트로 이동하는 것과 유사한
GET
요청을 합니다.HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Fri, 02 Apr 2021 17:31:43 GMT Server: Kestrel Transfer-Encoding: chunked [ { "date": 4/3/2021 10:31:44 AM, "temperatureC": 13, "temperatureF": 55, "summary": "Sweltering" }, { "date": 4/4/2021 10:31:44 AM, "temperatureC": -13, "temperatureF": 9, "summary": "Warm" }, // .. ]
다음 명령을 사용하여 현재
HttpRepl
세션을 종료합니다.exit
Visual Studio Code의 드롭다운 목록에서
dotnet
터미널로 돌아갑니다. 키보드에서 CTRL+C를 선택하여 웹 API를 종료합니다.
이제 웹 API를 만들었으므로 피자 웹 API의 요구 사항에 맞게 수정할 수 있습니다.