묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
인코딩을 할때 key=value 스타일과 file의 차이가 궁금합니다.
안녕하세요! 너무 좋은 수업 잘 듣고 있습니다. 공부하던 중 "applcation/x-www-form-urlencoded"와 "mulipart/form-data" 인코딩타입을 비교하던 도중 의문점이 생겼습니다. 1. 기존 파라미터 형태 값들(key=value 스타일)을 인코딩할때와 파일(수업에선 .png)을 인코딩할때 차이가 무엇인지 궁금합니다. 인코딩을 하기 전의 데이터 존재 형식이 form에서 받은 파라미터와 파일이 다른건지, 다르다면 어떻게 다른지도 궁금합니다. 2. 배경지식이 부족한 탓에 조금 부끄러운 질문이지만, 근본적으로 받은 데이터를 왜 인코딩해야하는지도 궁금합니다. HTTP 메세지 바디가 읽을 수 있는 언어가 정해져 있는건가요?
-
미해결모든 개발자를 위한 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까지 밖에 안들어서 강의 내용에 있는데도 성급하게 질문 드린것이라면 죄송합니다^^;