>백엔드 개발 >Golang >Go의 동일한 포트에서 웹 페이지와 API 경로를 어떻게 제공합니까?

Go의 동일한 포트에서 웹 페이지와 API 경로를 어떻게 제공합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-30 16:58:11985검색

How to Serve Web Pages and API Routes on the Same Port in Go?

다른 핸들 패턴을 사용하여 동일한 포트에서 웹 페이지 및 API 경로 제공

다음을 사용하여 동일한 포트에서 웹 페이지와 API 경로 모두 제공 고유한 핸들 패턴은 웹 개발의 일반적인 요구 사항입니다. net/http 패키지를 사용하여 Go에서 이를 달성하는 방법은 다음과 같습니다.

net/http 패키지는 들어오는 HTTP 요청에 대한 핸들러 세트를 관리하는 ServeMux 유형을 제공합니다. 처리기 등록은 Handle 메서드를 통해 수행됩니다. 문서에 따르면 긴 패턴이 짧은 패턴보다 우선합니다. 이 속성을 활용하여 동일한 포트에서 웹페이지와 API 경로를 동시에 제공할 수 있습니다.

예를 들어 루트 경로 / 아래의 웹페이지와 /api 아래의 API 경로를 제공하려면 다음 코드를 사용할 수 있습니다.

fs := http.FileServer(http.Dir("server/webapps/play_maths"))
http.Handle("/", fs) // Handles web pages at root path

apiRoutes := UserRoutes() // Initialize API routes as a handler
http.Handle("/api", apiRoutes.ServeHTTP) // Handles API routes

UserRoutes 함수는 API 경로에 대한 하위 라우터를 생성합니다. 기본적으로 하위 라우터는 상위 라우터의 접두사를 상속하지만 PathPrefix 메서드를 사용하여 이 동작을 재정의할 수 있습니다. 그런 다음 라우터는 API 경로에 대한 핸들러로 사용됩니다.

API 경로 핸들러 전에 웹 페이지 핸들러를 등록하여 웹 페이지 핸들러가 더 짧은 패턴을 갖도록 함으로써 우리는 더 긴 패턴이 있다는 사실을 활용하고 있습니다. 우선권을 가지세요. 결과적으로 /api로 시작하는 요청은 API 경로 핸들러에 의해 처리되고 다른 모든 요청(루트 경로에 대한 요청 포함)은 웹 페이지 핸들러에 의해 처리됩니다.

이 접근 방식은 다음을 제공합니다. 여러 프로세스를 실행하거나 역방향 프록시를 사용할 필요 없이 동일한 서버에서 다양한 유형의 HTTP 요청을 처리하는 유연한 방법입니다.

위 내용은 Go의 동일한 포트에서 웹 페이지와 API 경로를 어떻게 제공합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.