연습 - 기본 제공 미들웨어 사용

완료됨

ASP.NET Core에는 라우팅, 인증, HTTP 로깅과 같은 일반적인 작업을 처리하는 일련의 기본 제공 미들웨어 구성 요소가 포함되어 있습니다. 이러한 구성 요소를 사용하면 사용자 지정 미들웨어를 작성하지 않고도 앱에 기능을 추가할 수 있습니다.

사용자의 팀 리더는 회사의 기본 웹 사이트를 만드는 업무를 맡겼습니다. 웹 사이트는 기본 페이지에 환영 메시지를 표시하고, 별도의 /about 페이지에 회사의 간략한 역사를 표시해야 합니다. 이전 버전의 앱에는 /history URL에 회사 연혁이 있었으므로 기존 링크와의 호환성을 유지하려면 /history에서 /about로 요청을 리디렉션해야 합니다.

이러한 작업을 완료하려면 기본 제공된 MapGet 메서드와 UrlRewriter 미들웨어를 사용합니다.

ASP.NET Core 앱 만들기

팀 앱의 역할을 하려면 ASP.NET Core 앱이 필요합니다. Visual Studio Code에서 C# 개발 키트 확장 기능을 사용하여 새로운 ASP.NET Core 앱을 만들어 보겠습니다.

  1. Visual Studio Code를 시작합니다.

  2. Ctrl+Shift+P를 눌러 명령 팔레트를 엽니다.

  3. .NET: 새 프로젝트를 검색하여 선택합니다.

  4. ASP.NET Core Empty를 검색하여 선택합니다.

    ASP.NET Core Empty가 선택된 명령 팔레트의 스크린샷.

  5. 새 프로젝트에 대한 폴더를 선택하거나 만듭니다.

  6. 새 앱 MyWebApp의 이름을 지정합니다.

  7. 프로젝트 만들기를 선택하여 프로젝트를 만듭니다.

  8. 새 프로젝트가 열리면 Solution Explorer 창을 확장하여 프로젝트 파일을 확인합니다.

앱 실행

앱이 실행되는지 테스트합니다.

  1. Visual Studio Code에서 F5 키를 눌러 앱을 빌드하고 실행합니다.

    1. 메시지가 표시되면 디버거로 C# 을 선택합니다.
    2. 메시지가 표시되면 사용할 시작 구성으로 C#: MyWebApp [기본 구성] 을 선택합니다.

    이 명령은 앱을 시작하고 로컬 웹 서버에 호스팅합니다. 브라우저 창이 열리고 "Hello, World!"가 표시됩니다.

  2. Visual Studio Code에서 Shift+F5 를 눌러 브라우저 창을 닫고 앱을 중지합니다.

엔드포인트 매핑 및 URL 재작성기 추가

이제 작동하는 앱이 생겼으니 기본 페이지에 환영 메시지를 추가해 보겠습니다.

  1. Program.cs 파일을 엽니다.

  2. app.MapGet("/", () => "Hello World!"); 줄에서 "Hello World!" 메시지를 "Contoso에 오신걸 환영합니다!"로 변경합니다.

    app.MapGet("/", () => "Welcome to Contoso!");
    

    app.MapGet()은 HTTP GET 요청을 지정된 경로에 매핑합니다. ASP.NET Core의 이 기능을 엔드포인트 라우팅이라고 합니다. 이 코드는 파이프라인에 분기를 추가합니다. 요청 경로가 /인 경우, 엔드포인트 라우팅 미들웨어는 요청을 이 엔드포인트로 라우팅하고, 이후 응답에 "Contoso에 오신걸 환영합니다!"를 작성합니다.

  3. 그 다음 줄에 다음 코드를 추가합니다.

    app.MapGet("/about", () => "Contoso was founded in 2000.");
    

    이 코드는 또 다른 엔드포인트를 추가합니다. 요청 경로가 /about인 경우 엔드포인트는 응답에 "우리 회사는 2000년에 설립되었습니다."라고 기록합니다.

  4. 첫 번째 코드 app.MapGet() 다음 코드를 추가합니다.

    app.UseRewriter(new RewriteOptions().AddRedirect("history", "about"));
    

    이 코드는 /history에서 /about로 요청을 리디렉션하는 URL 재작성기 미들웨어 구성 요소를 추가합니다. AddRedirect() 메서드는 두 개의 매개 변수를 사용합니다. 요청 경로와 일치하는 정규식 패턴과 리디렉션할 대체 경로입니다.

  5. 다음 지시문을 파일의 맨 위에 추가합니다.

    using Microsoft.AspNetCore.Rewrite;
    

    이 지시문은 RewriteOptions 클래스에 대한 참조를 확인합니다.

변경 사항 테스트

  1. 모든 변경 내용을 저장하고 이전과 같이 앱을 실행합니다.
  2. 브라우저 창이 열리면 루트 URL에 "Contoso에 오신 것을 환영합니다!"가 표시됩니다. URL에 /about를 추가하고 Enter 키를 누르세요. 브라우저에 "Contoso는 2000년에 설립되었습니다."라는 메시지가 표시되어야 합니다.
  3. URL에서 /about/history로 바꾸고 Enter 키를 누르세요. 브라우저는 /about로 리디렉션되어야 합니다.
  4. 다음 연습을 위해 앱을 실행해 둡니다.