[go] mime/multipart 패키지를 사용한 멀티파트 HTTP 요청 처리

Go 언어에서 HTTP 요청을 보낼 때 파일 업로드를 위해 멀티파트(form-based file upload) 요청을 만들어야 할 때가 있습니다. 이때 mime/multipart 패키지를 사용하면 간단하게 멀티파트로 된 HTTP 요청을 만들 수 있습니다. 이번 포스팅에서는 mime/multipart 패키지를 사용하여 멀티파트 HTTP 요청을 처리하는 방법을 살펴보겠습니다.

멀티파트 HTTP 요청이란?

멀티파트 HTTP 요청은 하나 이상의 서로 다른 유형의 데이터를 포함하는 HTTP 요청입니다. 주로 파일 업로드나 폼 데이터 전송 등에 사용됩니다.

multipart.Writer 사용하기

멀티파트 HTTP 요청을 만들기 위해선 mime/multipart 패키지의 NewWriter 함수를 사용하여 multipart.Writer를 만들어야 합니다. 이후에 CreateFormFieldCreateFormFile 메서드로 필드를 추가하고, 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 클라이언트나 웹 서비스에서 유용하게 활용할 수 있습니다.

더 자세한 내용은 공식 문서를 참고하시기 바랍니다.