인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

꼬꼬록님의 프로필 이미지
꼬꼬록

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

정리

RestAPI에서 file전송기능 개발시 Content-Type 일관성문제

해결된 질문

작성

·

835

·

수정됨

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

안녕하세요.

파일전송기능을 공부하면서, restAPI에 적용하다보니 두가지 지식에 충돌이 있어서 질문드려봅니다.

RestAPI의 관점에서 Post시에 payload를 json으로 변환해서 보내는것으로 이해하고있는데 파일전송시에는 Post요청이라 하더라도 multipart/form-data로 보내는 것이 일반적인가요?

보통 파일첨부기능이 있는 게시판 API를 만든다고할때 글작성을 Post요청하면, 파일이 없을때는 application/json으로 보내고, 파일이 존재하는 경우면 multipart/form-data로 보내는 것인지 아니면, 일관되게 multipart/form-data로만, 아니면 json으로 base64인코딩을 하는 등으로 일관되게 정해서 보내는지 궁금합니다.

일관되지 않게 각각에 경우에 맞춰서 보내준다면, 요청데이터를 받아오는 방식이 ModelAttribute와 RequestBody로 달라지게 될텐데 별도의 핸들러를 구현하는식으로 가는것인지, 궁금합니다.

검색은 열심히 해보았는데 잘 못찾겠어서 혹시 너무 일반적인 질문이라면 키워드라도 알려주시면 감사하겠습니다.

 

답변 1

2

안녕하세요. 꼬꼬록님, 공식 서포터즈 David입니다.

구현하는 방법에 따라 다르겠지만

일반적으로 파일 업로드를 위한 API가 있습니다.

게시글은 json 포맷으로 REST(ful) API를 통해 업로드 하되, 파일은 첨부하는 즉시 혹은 게시글을 제출할 때 파일을 별도로 처리하여 파일 접근 경로를 게시글에 추가하는 등의 방법을 사용합니다.

네이버 블로그 글 작성시 동작을 개발자 도구로도 확인해 보면 이런 흐름을 볼 수 있습니다.

감사합니다.

꼬꼬록님의 프로필 이미지
꼬꼬록
질문자

제가 당초 생각했던 것은 글작성버튼을 눌렀을때 API정보를 하나에 담아야된다는 고정관념이 있었는데 여러번 나눠보낼생각을 못해본것 같습니다.

 

확인해보니 글작성완료버튼을 누르기 전에 파일첨부함과 동시에 multipart/form-data요청이 전송되고 이미지 id값을 반환하네요.

 (인프런 답글에서 첨부파일로 해보니 cdn url을 반환하고요)

파일첨부를 위한 API는 별도로 두고, 저장하도록 한 뒤 리소스위치만 반환할수있다면,

파일첨부 유무에 관계없이 일관되게 처리가 가능할것으로 보입니다!

 

답변 감사합니다.

잘 확인하신 것 같습니다:)

꼬꼬록님의 프로필 이미지
꼬꼬록

작성한 질문수

질문하기