이 글에서는 HTTP 요청 핸들러를 Go에서 설계하는 방법을 살펴보겠습니다. Gin 프레임워크를 사용하여 JSON 데이터와 multipart/form-data 요청의 일부로 전송된 이미지 파일을 모두 허용합니다.
요청 핸들러 정의부터 시작합니다. , UpdateProfile(), 예상되는 요청 본문 형식을 정의하는 구조체 포함:
type request struct { Username string `json:"username" binding:"required,min=4,max=20"` Description string `json:"description" binding:"required,max=100"` } func (h *Handlers) UpdateProfile() gin.HandlerFunc { return func(c *gin.Context) { // ... } }
요청 본문에서 JSON 데이터를 추출하려면 다음을 사용합니다. c.BindJSON(), 요청 구조체에 대한 포인터 제공:
var updateRequest request if err := c.BindJSON(&updateRequest); err != nil { // Handle JSON binding errors ... }
이미지 파일을 구문 분석하려면 c.FormFile()을 활용합니다. :
avatar, err := c.FormFile("avatar") if err != nil { // Handle file parsing errors ... }
"숫자 리터럴에 잘못된 문자 '-'가 있습니다."와 같은 오류가 발생하는 경우 원인일 가능성이 높습니다. 요청 본문에 multipart/form-data에 대한 경계도 포함되어 있는 동안 JSON을 구문 분석하려고 합니다. 대신 바인딩.FormMultipart 모드를 명시적으로 지정할 수 있습니다.
// c.ShouldBind will choose binding.FormMultipart based on the Content-Type header. // We call c.ShouldBindWith to make it explicitly. if err := c.ShouldBindWith(&updateRequest, binding.FormMultipart); err != nil { // Handle binding errors ... }
multipart/form-에서 JSON과 함께 XML 또는 YAML이 필요한 경우- 데이터 요청 시 수동으로 구문 분석할 수 있습니다. 예를 들면 다음과 같습니다.
var event struct { At time.Time `xml:"time" binding:"required"` Player string `xml:"player" binding:"required"` Action string `xml:"action" binding:"required"` } if err := binding.XML.BindBody([]byte(updateRequest.Event), &event); err != nil { // Handle binding errors ... }
논의된 기술을 따르면 단일 멀티파트/양식 내에서 JSON 데이터와 업로드된 이미지를 모두 효과적으로 구문 분석할 수 있습니다. -Gin을 사용하여 Go에서 데이터 요청. 잠재적인 바인딩 오류를 적절하게 처리하는 것을 잊지 마세요.
위 내용은 Go에서 Gin을 사용하여 다중 부분/양식 데이터 요청에서 JSON 및 이미지 데이터를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!