상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
헌법재판소의 판결이 집회 및 시위의 자유에 미치는 영향은 무엇인가요?
매독의 증상 완화를 위한 심리적 접근은 무엇인가요?
작가로서의 영감을 얻는 방법은 무엇인가요?
소설가로서의 자기 계발 방법은 무엇인가요?
소설가로서의 글쓰기 목표를 세우는 방법은?
키시너우의 주요 언어는 무엇인가요?
키시너우의 공공 서비스는 어떤가요?
키시너우의 주요 역사적 인물의 기념관은 어디에 있나요?
멘사 시험의 준비 방법은 무엇이 있나요?
멘사에서의 자원봉사 활동은 어떻게 평가되나요?
크로거의 매장 내 어린이 놀이 공간은 있나요?
코스트코에서 판매하는 애완동물 용품은 어떤 것이 있나요?
Previous
Next
수정하기 - 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순위입니다.
수정하기
취소하기