> 백엔드 개발 > Golang > http.NewRequest()를 사용하여 URL 인코딩된 POST 요청을 올바르게 보내는 방법은 무엇입니까?

http.NewRequest()를 사용하여 URL 인코딩된 POST 요청을 올바르게 보내는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-24 11:35:17
원래의
701명이 탐색했습니다.

How to Properly Send a URL-Encoded POST Request using http.NewRequest()?

http.NewRequest(...)를 사용하여 URL 인코딩된 POST 요청 만들기

이 컨텍스트에서는 POST를 보내려고 합니다. application/x-www-form-urlencoded 콘텐츠 형식의 페이로드를 사용하여 사전 정의된 API를 통해 요청합니다. Request.ParseForm과 같은 메서드에 의존하는 대신 http.NewRequest(...)를 사용하여 선호되는 접근 방식을 더 자세히 살펴보겠습니다.

요청 헤더를 효율적으로 관리하기 위해 http.NewRequest(method, urlStr string)를 선택했습니다. , body io.Reader)를 사용하여 요청을 작성하세요. 이 전략은 일반적으로 타당하지만, 주요 감독은 페이로드 처리에 있습니다. HTTP 사양에 따르면 URL 인코딩 페이로드는 URL에 직접 추가되지 않고 본문 매개변수를 통해 제공되어야 합니다.

따라서 이 문제를 해결하려면 URL 인코딩 페이로드를 포함하도록 코드를 수정해야 합니다. 본문 섹션에서. 예는 다음과 같습니다.

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "strings"
)

func main() {
    apiUrl := "https://api.com"
    resource := "/user/"
    data := url.Values{}
    data.Set("name", "foo")
    data.Set("surname", "bar")

    u, _ := url.ParseRequestURI(apiUrl)
    u.Path = resource
    urlStr := u.String() // "https://api.com/user/"

    client := &http.Client{}
    r, _ := http.NewRequest(http.MethodPost, urlStr, strings.NewReader(data.Encode())) // URL-encoded payload
    r.Header.Add("Authorization", "auth_token=\"XXXXXXX\"")
    r.Header.Add("Content-Type", "application/x-www-form-urlencoded")

    resp, _ := client.Do(r)
    fmt.Println(resp.Status)
}
로그인 후 복사

이 수정을 통해 이제 코드는 API에서 요구하는 대로 본문에 URL 인코딩 페이로드를 올바르게 보내야 합니다. 결과적으로 resp.Status 200 OK로 표시된 대로 성공적인 응답을 기대해야 합니다.

위 내용은 http.NewRequest()를 사용하여 URL 인코딩된 POST 요청을 올바르게 보내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿