Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다.
대략 4개월 정도 다 같이 스터디를 쉬었다가 이제 재개하여, 웹 만들기 부분을 복습하기 시작했다.
이전에는 크롬에 Advanced REST client이 없어져서 Request 테스트 하지 못했었다.
이번에 찾다보니 비슷한 app이 있어서 그걸 사용했고 그 부분만 추가로 업데이트 하려고 한다.
그 당시에는 아마 무슨 이유인지 비슷한 app을 찾을 의지도 없었고, 어영부영 하기 싫은데 그냥 막 했던 거 같다.
아마 이해를 하나도 못하겠는데 해야하니까 일단 하자 이러면서 했던 거 같다.
그렇다고 지금은 이해를 하냐, 그건 아니지만 그때랑 마음가짐이 다르지 않을까😅
- 이전 내용: https://world-hee.tistory.com/46
Google에 "chrome http clinet app" 이라고 검색하면 최상단에 "ReqBin HTTP Client"가 나온다.
맨 위에 있는 "ReqBin HTTP Client"를 클릭하여 Chrome에 추가를 눌러 설치한다.
추가 후에 chrom 확장 프로그램에서 실행한다.
그리고 아래와 같이 URL은 "http://localhost:3000/foo" 기재하고, "Body"로 선택 후 타입은 "POST", JSON 형식으로 작성하여 Send를 클릭한다.
{
"FirstName": "G",
"LastName": "Hee",
"Email": "Hee@email.com"
}
Send를 해주면 아래 결과가 나오는데 200(OK)와 응답 코드가 아래와 같이 나온다.
결과를 보면 JSON 형태의 String으로 출력된 것을 볼 수 있다.
근데, FirstName과 LastName은 비어있고, Email과 Create time만 제대로 들어오고 Name은 안들어온 것으로 보인다.
이유는 Requset를 보낼 때, key를 소문자로 했고 Go에서는 대문자로 Struct가 만들어져있다.
Go과 JSON에서 사용하는 방식이 다르기 때문에 맞춰주어야 한다.
해서 아래와 같이 Struct에 추가한다.
``을 사용하여 어노테이션으로 json에서 first_name으로 쓴다고 붙여주는 것이다.
type User struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Email string `json:"email"`
CreateAt time.Time `json:"created_at"`
}
그리고 다시 실행하여 Request를 보내면 아래와 같이 값이 들어가 나오는 것을 볼 수 있다.
근데 결과 텍스트가 JSON 형태로 나오지 않는 이유는 웹이 보았을 때 Result가 JSON 포맷이 아닌 텍스트로 보는 것이다.
그래서 Response를 보낼 때 format이 무엇인지 알려주어야 한다.
Header에 적어서 알려주면 된다.
Header에 add를 해서 content-type은 JSON 타입이라는 것을 추가한다.
그리고 코드를 다시 실행하고 동일하게 Request를 보내면 JSON 형태로 보이는 것을 확인할 수 있다.
data, _ := json.Marshal(user)
w.Header().Add("content-type", "application/json")
w.WriteHeader(http.StatusOK)
fmt.Fprint(w, string(data))
Response가 JSON 형태로 보이는 것을 확인할 수 있고, Header를 봐도 type이 JSON인 것을 확인 할 수 있다.
'Language > Golang' 카테고리의 다른 글
Golang (Go언어) Go로 만드는 웹 (5) (0) | 2025.01.10 |
---|---|
Golang (Go언어) Go로 만드는 웹 (4) (0) | 2025.01.09 |
Golang (Go언어) Go로 만드는 웹 (4) (0) | 2025.01.08 |
Golang (Go언어) Go로 만드는 웹 (3) (0) | 2025.01.07 |
Golang (Go언어) Go로 만드는 웹 (2) (2) | 2025.01.03 |