상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Go에서 HTTP 서버를 만드는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Go 언어는 간결하고 효율적인 <a href='https://sangseek.com/sangseeks/HTTP 서버/ko'>HTTP 서버</a>를 쉽게 만들 수 있는 강력한 기능을 제공합니다. Go의 표준 라이브러리에는 HTTP 서버를 구축하는 데 필요한 패키지가 포함되어 있어, 복잡한 설정 없이도 빠르게 서버를 시작할 수 있습니다. 아래에서는 Go에서 HTTP 서버를 만드는 방법에 대해 단계별로 설명하겠습니다. 1. Go 설치 먼저, Go 언어가 설치되어 있어야 합니다. Go의 공식 웹사이트(https://golang.org/dl/)에서 설치 파일을 다운로드하고 설치합니다. 설치가 완료되면, 터미널에서 `go version` 명령어를 입력하여 설치가 제대로 되었는지 확인합니다. 2. 기본 HTTP 서버 만들기 Go에서 HTTP 서버를 만드는 기본적인 방법은 `net/http` 패키지를 사용하는 것입니다. 아래는 간단한 HTTP 서버의 예제입니다. ```go package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") } func main() { http.HandleFunc("/", handler) // 루트 경로에 대한 <a href='https://sangseek.com/sangseeks/핸들러/ko'>핸들러</a> 등록 fmt.Println("서버가 http://localhost:8080에서 실행 중입니다.") http.ListenAndServe(":8080", nil) // 서버 시작 } ``` 위 코드는 기본적인 HTTP 서버를 설정합니다. `http.HandleFunc`를 사용하여 루트 경로("/")에 대한 요청을 처리하는 `handler` 함수를 등록합니다. `http.ListenAndServe`는 지정된 포트(여기서는 8080)에서 서버를 시작합니다. 3. 서버 실행 위 코드를 `main.go`라는 파일로 저장한 후, 터미널에서 다음 명령어를 실행하여 서버를 시작합니다. ```bash go run main.go ``` 서버가 실행되면 웹 브라우저에서 `http://localhost:8080`에 접속하여 "Hello, World!" 메시지를 확인할 수 있습니다. 4. 다양한 핸들러 추가하기 여러 경로에 대해 다양한 핸들러를 추가할 수 있습니다. 예를 들어, 다음과 같이 여러 경로를 처리할 수 있습니다. ```go package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") } func goodbyeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Goodbye, World!") } func main() { http.HandleFunc("/hello", helloHandler) http.HandleFunc("/goodbye", goodbyeHandler) fmt.Println("서버가 http://localhost:8080에서 실행 중입니다.") http.ListenAndServe(":8080", nil) } ``` 이제 `/hello` 경로에 접속하면 "Hello, World!" 메시지를, `/goodbye` 경로에 접속하면 "Goodbye, World!" 메시지를 확인할 수 있습니다. 5. <a href='https://sangseek.com/sangseeks/정적 파일/ko'>정적 파일</a> 제공하기 Go는 정적 파일을 제공하는 것도 매우 간단합니다. `http.FileServer`를 사용하여 특정 디렉토리의 파일을 제공할 수 있습니다. ```go package main import ( "net/http" ) func main() { fs := http.FileServer(http.Dir("./static")) // static 디렉토리의 파일 제공 http.Handle("/static/", http.StripPrefix("/static/", fs)) http.ListenAndServe(":8080", nil) } ``` 위 코드는 `./static` 디렉토리의 파일을 `/static/` 경로를 통해 제공하는 서버를 설정합니다. 6. <a href='https://sangseek.com/sangseeks/미들/ko'>미들</a>웨어 사용하기 Go에서는 미들웨어를 사용하여 요청을 가로채고 처리할 수 있습니다. 예를 들어, 로깅 미들웨어를 추가할 수 있습니다. ```go package main import ( "fmt" "log" "net/http" ) func loggingMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { log.Printf("요청: %s %s", r.Method, r.URL.Path) next.ServeHTTP(w, r) }) } func main() { http.Handle("/", loggingMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") }))) http.ListenAndServe(":8080", nil) } ``` 위 코드는 모든 요청에 대해 로그를 출력하는 미들웨어를 추가합니다. 7. JSON 응답 보내기 Go에서 JSON 응답을 보내는 것도 간단합니다. `encoding/json` 패키지를 사용하여 구조체를 JSON으로 변환할 수 있습니다. ```go package main import ( "encoding/json" "net/http" ) type Message struct { Text string `json:"text"` } func messageHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(Message{Text: "Hello, World!"}) } func main() { http.HandleFunc("/json", messageHandler) http.ListenAndServe(":8080", nil) } ``` 위 코드는 `/json` 경로에 접속할 때 JSON 형식의 응답을 반환합니다. 8. 결론 Go 언어를 사용하여 HTTP 서버를 만드는 것은 매우 간단하고 직관적입니다. 기본적인 서버 설정부터 시작하여, 다양한 핸들러, 정적 파일 제공, 미들웨어, JSON 응답 등 다양한 기능을 추가할 수 있습니다. 이러한 기능들을 조합하여 복잡한 웹 애플리케이션을 구축할 수 있습니다. Go의 강력한 성능과 간결한 문법 덕분에 많은 개발자들이 Go를 선택하고 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기