본문 바로가기

Code/go & python & java

[golang] net/http 처음 사용해보기

net/http

http 패키지부터 한번 사용해보겠습니다.

 

package main

import (
    "fmt"
    "net/http"
)

func main() {
    fmt.Print("Hello")
    http.ListenAndServe("localhost:8080", nil)
}

 

실행해봤습니다. 요청이 들어오고 서버가 응답한것을 확인할수 있습니다. (404)

공식문서(링크)를 한번 봐봅니다. http 패키지가 있고 설명이 있습니다.

그리고 vs code에서 ctrl + 클릭해서 ListenAndServe 를 자세히 봐봅니다.

주소 스트링과, 핸들러를 받습니다. 핸들러가 뭔지 확인해보기위해

핸들러를 또 ctrl + 클릭해보면 Handler 가 사실은 인터페이스인것을 알수 있습니다.

인터페이스에 당연히 함수가 명시되어있는데 그게 ServeHTTP함수 입니다.

즉, k에는 ServeHTTP함수를 넣어줘야합니다. (브라우저에 Hello 가 찍힙니다.)

 

package main

import (
    "fmt"
    "net/http"
)

// type Handler interface {
//     ServeHTTP(ResponseWriter, *Request)
// }

type MyWebserverType bool

func (m MyWebserverType) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Hello there !!!")
    fmt.Fprintln(w, "Request is %+v: ", r)
}

func main() {
    fmt.Print("Hello")
    var k MyWebserverType
    http.ListenAndServe("localhost:8080", k)
}