미해결
모든 개발자를 위한 HTTP 웹 기본 지식
multipart file array 표현하는 방식의 표준이 있나요?
김영한님 안녕하세요?
딱 필요했던 정보를 재밌고 알차게 정리해주셔서 HTTP 강의 즐겁게 보고 있습니다 :)
제가 영한님의 HTTP 강의를 들어야겠다고 다짐하게 된 에피소드가 있는데요,
네트워크 통신 관련하여 백그라운드가 얕아서 인터넷에 검색해봐도 원하는 결과를 찾지 못했습니다.
관련하여 조언이나 힌트를 얻고자 질문 드립니다.
글 읽어주셔서 미리 감사드리고, 답변 주신다면 도움이 많이 될 것 같습니다!
---
Flutter 클라이언트에서 네트워크 통신을 위해 `DIO`라는 라이브러리를 사용하고 있는데, 해당 라이브러리에서 multipart 필드가 array면 필드명(ex:files)에 '[]'를 추가하여(ex:files[]) 하여 서버로 통신하고 있습니다. 해당 라이브러리의 설명으로는 대부분의 백엔드 서버에서 필드명에 []를 붙이지 않으면 multipart file array를 인식하지 못하기 때문에 편의(?)를 위해 이런 내부 동작이 있는 것 같습니다. https://pub.dev/packages/dio#multiple-files-upload
// Flutter 클라이언트 샘플 코드 FormData.fromMap({
"files": [
MultipartFile.fromFileSync("./example/upload.txt",
filename: "upload.txt"),
MultipartFile.fromFileSync("./example/upload.txt",
filename: "upload.txt"),
]
});
클라이언트에서 files라고 필드를 정의해도, 서버에서 확인해보면 files[]라고 보내고 있습니다 :)
사실 네트워크 통신 시 필드명에 배열을 표현하는 방식은 언어마다 다양한 것 같은데, 클라이언트에서 사용하는 네트워크 라이브러리에서 배열 표현에 `[]`를 붙이는 걸 보면 제법(?) 강력한 표준인 게 아닐까 추측하고 있습니다.
서버에서는 'files'로 보내도 multipart file 배열을 인식할 수 있지만, 그래도 multipart 필드명에 []를 붙여두었습니다. files => files[]
혹시 관련된 표준 내용을 확인하려면 어디서 알아봐야할까요?
이게 일반적인 표준이긴 한가요?
---
제가 아직 챕터 2까지 밖에 안들어서 강의 내용에 있는데도 성급하게 질문 드린것이라면 죄송합니다^^;