해결된 질문
작성
·
417
1
안녕하세요 원두멘토님!
13챕터에서 graphql-upload 버전이슈로 버전을 낮춰 대응하셔 작동이 되게 알려주셨습니다.
확인을 해보니 apollo server에서 원래 패키지에 포함시켰던 디펜젼시를 csrf문제로 포함시키지 않고 분리를 해서 버전관리가 되지 않아서 생긴 문제인것 같았습니다.
제가 궁금한 점은 graphql-upload로 클라이언트에게 업로드 기능을 제공해주는 것이 아닌 다른 방법으로 grpahql에서 upload기능을 제공해 줄수있는지 궁금합니다.
보안상 좋지 않고 버전관리가 되지 않는 패키지는 사용하는것이 나중을 생각했을때 더 개발난이도가 올라갈 것 같다 생각이 들었습니다.
제가 생각한 방법은 multer를 사용하는 건데 그렇게 하려면 restapi로 제공을 해줘야 하는데 grpahql 과 restapi를 같이 사용해서 api를 제공해줘야하는데 이 또한 가능하거나 추천하시는지 궁금합니다.
답변 2
1
1
안녕하세요! 주환님!
이렇게 다시 뵙게되었네요! 방가워요!^^
많은 부분 이미 알고 계시겠지만,
이미지 업로드에 관한 전반적인 내용과 더 나은 해결책 등을 한 번 더 말씀드려볼게요!
일반적으로 rest-api를 통해 이미지를 업로드하고자 한다면, multer를 사용하게 됩니다.
graphql-api를 통해 이미지를 업로드하고자 한다면, graphql-upload를 사용하구요!
따라서, rest-api와 graphql-upload, 반대로 graphql-api와 multer는 잘 맞지 않을 수 있습니다.
하지만, file처리 부분만 따로 떼어내어 rest-api와 multer를 사용하시는 것은 가능해요!
관련한 해결방안으로는
1) 하나의 서버 내에서 graphql, rest-api를 모두 사용하시되, rest-api는 file처리에만 사용하고, graphql은 데이터 처리에만 사용하시는 방법이 있습니다.
2) file 서버를 기존 backend 서버와 분리하시어 file 서버는 rest-api로 사용하는 방법이 있습니다.(file 전송 부하만 분산시키기에도 도움이 되구요!)
3) 또 다른 요즘 트렌드로는, 브라우저에서 다이렉트로 AWS-S3에 저장하는 방법입니다. 이를 통해 자체 백엔드로의 file 전송 부하를 제거할 수 있으며, file 패키지 관련한 걱정도 덜 수 있을 것 같네요!^^ 보안 문제도 백엔드에서 키를 발급받아 처리하실 수 있구요!
(해당 방법으로는 presignedurl 키워드로 검색해 보시면 좋을 것 같아요!)
추천 순서로는 3 > 2 > 1 순으로 추천드립니다!^^