Go 언어에서 HTTP 요청을 보낼 때 파일 업로드를 위해 멀티파트(form-based file upload) 요청을 만들어야 할 때가 있습니다. 이때 mime/multipart
패키지를 사용하면 간단하게 멀티파트로 된 HTTP 요청을 만들 수 있습니다. 이번 포스팅에서는 mime/multipart
패키지를 사용하여 멀티파트 HTTP 요청을 처리하는 방법을 살펴보겠습니다.
멀티파트 HTTP 요청이란?
멀티파트 HTTP 요청은 하나 이상의 서로 다른 유형의 데이터를 포함하는 HTTP 요청입니다. 주로 파일 업로드나 폼 데이터 전송 등에 사용됩니다.
multipart.Writer 사용하기
멀티파트 HTTP 요청을 만들기 위해선 mime/multipart
패키지의 NewWriter
함수를 사용하여 multipart.Writer
를 만들어야 합니다. 이후에 CreateFormField
나 CreateFormFile
메서드로 필드를 추가하고, Close
메서드로 요청을 완료합니다.
아래는 multipart.Writer
를 사용하여 멀티파트 HTTP 요청을 만드는 예제입니다.
package main
import (
"bytes"
"mime/multipart"
"net/http"
"os"
)
func main() {
var requestBody bytes.Buffer
multipartWriter := multipart.NewWriter(&requestBody)
// 파일 전송
file, _ := os.Open("file.txt")
defer file.Close()
fileWriter, _ := multipartWriter.CreateFormFile("fileField", "file.txt")
io.Copy(fileWriter, file)
// 폼 데이터 전송
multipartWriter.WriteField("key", "value")
multipartWriter.Close()
req, _ := http.NewRequest("POST", "http://example.com/upload", &requestBody)
req.Header.Set("Content-Type", multipartWriter.FormDataContentType())
client := &http.Client{}
client.Do(req)
}
위 코드에서 multipartWriter
를 이용하여 파일과 텍스트 필드를 추가하고, 마지막에 Close
메서드를 호출하여 요청을 완료합니다.
요약
이번 포스팅에서는 mime/multipart
패키지를 사용하여 멀티파트 HTTP 요청을 처리하는 방법에 대해 알아보았습니다. 이를 통해 파일 업로드나 폼 데이터 전송 등의 기능을 구현할 수 있으며, 간단한 API 클라이언트나 웹 서비스에서 유용하게 활용할 수 있습니다.
더 자세한 내용은 공식 문서를 참고하시기 바랍니다.