Go를 사용하여 기본 웹 서버를 구축하는 방법

Go를 사용하여 기본 웹 서버를 구축하는 방법

Go는 시스템 소프트웨어뿐만 아니라 현대적인 웹 애플리케이션을 구축하기 위한 흥미로운 프로그래밍 언어입니다. 출시 후 큰 화제를 불러일으켰으며 Docker, Kubernetes, Terraform, Dropbox 및 Netflix 와 같은 서비스를 강화했습니다 .

게다가 Go의 강력한 내장 패키지 컬렉션은 Go를 웹 프로그래밍에 탁월한 선택으로 만들어줍니다. 이 기사에서는 Go에서 기본 웹 서버를 작성하는 방법을 보여줍니다 .

필요한 패키지 가져오기

net/HTTP 패키지는 웹 서버와 클라이언트를 만드는 데 필요한 모든 것을 제공합니다. 이 패키지는 웹 프로그래밍을 처리하는 데 유용한 몇 가지 기능을 제공합니다.

소스 코드 시작 부분에 아래 줄을 추가하여 가져올 수 있습니다.

import "net/http"

또한 이 기사에서는 fmt 패키지를 사용하여 문자열 형식을 지정하고 로그 패키지를 사용하여 오류를 처리합니다. 위에 표시된 대로 개별적으로 가져오거나 단일 import 문을 사용하여 모든 패키지를 가져올 수 있습니다.

import (
"fmt"
"log"
"net/http"
)

필요한 패키지를 가져온 후 기본 함수 작성을 진행할 수 있습니다. 계속해서 .go 확장자를 사용하여 소스 파일을 저장하세요 . Vim을 사용하는 경우 아래 명령을 사용하여 Vim을 저장하고 종료하세요.

:wq server.go

주요 함수 작성

Go 프로그램은 "main"이라는 적절한 이름의 main 함수 내에 직접 상주합니다. 여기서 서버 호출을 해야 합니다 . 소스 코드에 다음 줄을 추가하고 어떤 작업을 수행하는지 확인하세요.

func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}

예제에서는 func 키워드를 사용하여 main 함수를 정의합니다 . Go에는 여는 중괄호 위치에 대한 엄격한 규칙이 있으므로 시작 중괄호가 올바른 줄에 있는지 확인하세요. main의 첫 번째 문은 루트 경로( "/" )에 대한 모든 웹 요청이 http.HandlerFunc 유형의 함수인 인덱스에 의해 처리되도록 정의합니다 .

두 번째 줄은 http.ListenAndServe 함수를 통해 웹 서버를 시작합니다 . 서버의 포트 8080에서 들어오는 HTTP 요청을 지속적으로 수신하도록 서버에 신호를 보냅니다. 이 함수의 두 번째 매개변수는 프로그램을 끝까지 차단하는 데 필요합니다.

http.ListenAndServe는 항상 오류를 반환하므로 예제에서는 이 호출을 log.Fatal 호출 내부에 래핑 합니다 . 이 명령문은 서버 측에서 생성된 모든 오류 메시지를 기록합니다.

처리 기능 구현

보시다시피, 메인 함수는 핸들러 함수 인덱스를 호출하여 클라이언트 요청을 처리합니다. 그러나 예제에서는 아직 서버에 대해 이 기능을 정의하지 않았습니다.

인덱스 함수를 사용 가능하게 만드는 데 필요한 명령문을 추가해 보겠습니다.

func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}

이 함수는 http.ResponseWriterhttp.Request 유형의 두 가지 다른 인수를 사용합니다 . http.ResponseWriter 매개변수에는 수신 요청에 대한 서버의 응답이 http.Request 객체 형식으로 포함되어 있습니다 .

fmt 패키지 의 Fprintf 함수는 텍스트 문자열을 표시하고 조작하는 데 사용됩니다. 기사에서는 이를 사용하여 웹 요청에 대한 서버의 응답을 표시합니다. 마지막으로 r.URL.Path[1:] 요소는 루트 경로 다음에 데이터를 가져오는 데 사용됩니다.

나머지 부분을 모두 추가하세요.

나머지 구성 요소를 모두 추가하면 Go 웹 서버가 준비됩니다. 코드는 다음과 같습니다:

import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}

이 Go 웹 서버 코드를 실행 파일로 컴파일하려면 첫 번째 줄이 필요합니다.

Go를 사용하여 기본 웹 서버를 구축하는 방법

이 Go 웹 서버 코드를 실행 파일로 컴파일합니다.


99개 이상의 구찌 배경화면, 아름다운 구찌 배경화면 다운로드

99개 이상의 구찌 배경화면, 아름다운 구찌 배경화면 다운로드

아래 구찌 배경화면 중 일부가 컴퓨터 배경화면이나 휴대폰 배경화면에 적합한지 살펴보겠습니다.

Windows 10의 파일 탐색기 탐색 창에서 빠른 액세스를 추가/제거하는 방법

Windows 10의 파일 탐색기 탐색 창에서 빠른 액세스를 추가/제거하는 방법

빠른 액세스는 작업 중인 파일과 자주 사용하는 폴더에 대한 최단 경로입니다. 자주 액세스하는 폴더와 최근 파일입니다.

Opera VPN 검토: 간단하고 빠르며 무료입니다.

Opera VPN 검토: 간단하고 빠르며 무료입니다.

아마도 Opera 웹 브라우저에 무료 VPN이 제공된다는 소식을 들었을 수도 있고, 이미 Opera를 좋아하고 VPN 서비스가 어떻게 작동하는지 알고 싶을 수도 있습니다.

2.4GHz Wi-Fi 네트워크를 비활성화하는 방법과 이유는 무엇입니까?

2.4GHz Wi-Fi 네트워크를 비활성화하는 방법과 이유는 무엇입니까?

홈 Wi-Fi 네트워크에서 기존 2.4GHz 대역을 끄고 더 빠르고 덜 "붐비는" 새로운 5GHz 대역을 사용하는 것을 고려해야 합니다. 다음 글을 통해 알아보도록 하겠습니다.

Windows Defender에서 샌드박스 기능을 활성화하는 방법

Windows Defender에서 샌드박스 기능을 활성화하는 방법

Microsoft Windows Defender의 통합 바이러스 백신 엔진은 샌드박스 환경에서 실행할 수 있는 최초의 바이러스 백신 소프트웨어가 되었습니다.

Screen Locker 랜섬웨어란 무엇인가요? 제거하는 방법?

Screen Locker 랜섬웨어란 무엇인가요? 제거하는 방법?

Screen Locker 랜섬웨어는 화면을 장악하여 기기를 사용하지 못하게 하는 일종의 랜섬웨어입니다. 이러한 유형의 랜섬웨어는 증가하고 있으며 이에 대한 충분한 정보가 없으면 제거하기가 매우 어려울 수 있습니다.

WiFi 동글 속도가 느리고 성능이 떨어지는 6가지 이유

WiFi 동글 속도가 느리고 성능이 떨어지는 6가지 이유

WiFi 동글을 사용할 때 몇 가지 문제가 발생할 수 있습니다. 특히 집에 있는 다른 장치에 필요한 수준을 충족하지 못하는 낮은 무선 속도가 있습니다. USB WiFi 어댑터가 느린 이유와 이를 해결하기 위해 수행할 수 있는 작업은 다음과 같습니다.

USB를 포맷해야 하는 이유는 무엇입니까? USB를 포맷하는 방법은 무엇입니까?

USB를 포맷해야 하는 이유는 무엇입니까? USB를 포맷하는 방법은 무엇입니까?

USB 포맷은 다른 드라이브 포맷과 거의 같습니다. 기본 설정을 사용하거나 다양한 옵션의 의미를 알아보고 가장 적합한 옵션을 사용할 수 있습니다. 다음 문서는 USB 포맷 시 최적의 설정을 선택하는 데 도움이 됩니다.

컴퓨터에 역사적인 그림 스타일 배경화면 세트를 다운로드하세요.

컴퓨터에 역사적인 그림 스타일 배경화면 세트를 다운로드하세요.

컴퓨터와 휴대폰을 위한 아름다운 배경화면 공유 카테고리에 이어 오늘 LuckyTemplates는 독자들에게 고대 테마의 그림 스타일 배경화면 세트를 보내려고 합니다. 마음에 드시면 시청하시고 다운로드 하시기 바랍니다.

라우터용 게스트 네트워크를 설정하는 방법

라우터용 게스트 네트워크를 설정하는 방법

라우터의 게스트 액세스는 개인 무선 네트워크 시스템과 완전히 별개인 게스트 네트워크로 이해됩니다.