강의

멘토링

로드맵

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

Minkoo Lee님의 프로필 이미지
Minkoo Lee

작성한 질문수

Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"

Pagination & Filter 구현하기

질문드립니다.

작성

·

25

·

수정됨

0

페이징, 필터 강의 듣고 질문드립니다.

json-server의 db.json을 활용하여 구현하시는건 강의 잘 들었습니다.


다만, 실제 백엔드 api를 호출하여 목록조회결과 json값을 받은 뒤 처리하는건 똑같죠?

전체카운트도 백엔드API통해서 가져오는게 보통이져?

 

강의 들으면서 백엔드의 DB가 사용되었을땐 어떻게 될까를 계속 생각하게 되는데요.
params 객체에 그냥 조회조건(where조건, order by 등)들이 들어가서 백엔드에서 DB 쿼리 조회조건으로만 들어가면 끝이겠죠?

 

목록이 대량이고, 서버페이징을 사용한다면?
순간 헷갈리는건
DB를 계속 호출해서 화면을 가져오느냐? (대량건?)
화면에 뿌려져 있는것만 사용하는냐?(소량건?)
먼가 한번에 감이 안오네요.

퀴즈

프론트엔드 개발 과정에서 json-server와 같은 도구를 사용하는 주된 목적은 무엇일까요?

실제 백엔드 서버의 성능 테스트

데이터베이스 스키마 설계

테스트 또는 프로토타이핑을 위한 가상 API 서버 구축

프론트엔드 코드 최적화

답변 2

2

짐코딩님의 프로필 이미지
짐코딩
지식공유자

안녕하세요! 🙂

좋은 질문이에요. 실제 백엔드로 전환하면 어떻게 달라지는지 궁금하신 거죠. 하나씩 정리해드릴게요.

네, 맞아요. 실제 백엔드 API를 호출해서 JSON 응답을 받은 뒤 처리하는 흐름은 json-server와 동일해요. json-server가 가짜 REST API 역할을 해준 거고, 실제 백엔드로 바뀌어도 프론트엔드 입장에서는 API 주소만 바뀌고 데이터를 받아서 뿌리는 로직은 같아요.

전체 카운트도 맞아요. 보통 백엔드 API가 페이징 응답에 totalCount(또는 total)를 함께 내려줘요. json-server에서 X-Total-Count 헤더로 받던 것처럼, 실제 백엔드에서도 응답 헤더나 응답 body에 전체 건수를 포함해서 보내주는 게 일반적이에요. 다만 이건 회사마다, 프로젝트마다 API 설계 방식이 다를 수 있어요. 어떤 곳은 헤더에, 어떤 곳은 body에 넣기도 하고요.

조회 조건도 말씀하신 대로예요. params 객체에 where 조건, 정렬, 페이지 번호 등을 담아서 보내면 백엔드에서 DB 쿼리 조건으로 변환해서 처리해요. 프론트엔드가 하는 일은 동일합니다. 다만 params 구조나 API 스펙은 회사마다 다르기 때문에, 백엔드 팀과 API 명세를 맞추는 과정이 실무에서는 필수예요.

서버 페이징에서 헷갈리시는 부분은, 매번 해당 페이지에 필요한 데이터만 API로 요청해서 가져오는 것이에요. 예를 들어 한 페이지에 10건씩 보여준다면, 1페이지 요청 시 1~10번 데이터만, 2페이지 요청 시 11~20번 데이터만 백엔드에서 가져와요. 대량 데이터를 한 번에 다 가져오는 게 아니라, 페이지를 넘길 때마다 해당 페이지 분량만 API를 호출하는 거예요. 그래서 "소량건"이 맞아요 🙂

감사합니다 🙏

Minkoo Lee님의 프로필 이미지
Minkoo Lee
질문자

친절한 답변 감사합니다. 서버페이징일 경우 페이지당 데이터만 가져온다고 생각했을때, 한페이지당 표출갯수, 현재페이지, 조회조건들만 params로 백엔드에 잘 넘겨주면 되겠네요. 설명 진심으로 감사드립니다. 마저 완주해보겠습니다. Vue3+ 스프링부트 구조에서 각각 프론트,백엔드 포트를 별개로 띄웠을때 jwt 설정하여 로그인이나 api호출+cors+csrf 사용, 스프링부트에 vue3 소스를 넣어서 한덩이로 배포하는방법 이런강의도 있었으면 좋겠습니다. 프론트, 백엔드 각각 볼땐 이해되는데 세트로 볼때 이해가 잘 안가는 부분들이 있습니다. 암튼 답변 감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. Minkoo Lee님,

Vue.js와 관련한 페이징 및 필터링 강의에 대한 좋은 질문을 주셨습니다!

백엔드 API를 호출하여 목록 조회 결과를 처리하는 방식은 강의에서 제시한 json-server와 유사합니다. 다만, 실제 백엔드를 사용할 경우 DB에서 데이터가 어떻게 조회되고 처리되는지를 이해하는 것이 중요합니다.

백엔드 API 구현 및 데이터 처리

  1. 조회 조건

    • params 객체를 활용하여 where 조건이나 order by 등의 쿼리 파라미터를 서버에 전달합니다. 서버는 이를 기반으로 DB에 적절히 쿼리를 수행합니다.
  2. 서버 페이징

    • 대량의 데이터를 다룰 때는 클라이언트에서 모든 데이터를 처리하기 힘들기 때문에, 서버 페이징을 통해 필요한 부분만 가져옵니다.
    • 서버 페이징은 클라이언트가 페이지나 페이지 크기를 요청하면, 서버는 그에 맞는 데이터 청크를 반환합니다.
  3. 대량 데이터 vs 소량 데이터

    • 대량 데이터는 필요할 때마다 서버에서 가져오는 방식(지연 로딩)이 일반적입니다. 이는 네트워크 부하를 줄이고 클라이언트의 성능을 향상시킵니다.
    • 소량 데이터는 클라이언트에 필요한 모든 데이터를 한 번에 가져와 로컬에서 빠르게 조회나 검색을 할 수 있도록 합니다.

참고 링크

질문하신 내용과 유사한 주제를 다룬 여기에서 json-server와 관련된 설명을 참고하실 수 있습니다. 자세한 내용은 아래 링크를 참조하세요:

어떤 방식이 맞는지는 데이터의 양, 응답 속도 요구사항, 사용자의 경험 등을 고려하여 결정됩니다. 백엔드와 클라이언트 간에 데이터를 교환하는 최적의 패턴을 선택하는 것이 중요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Minkoo Lee님의 프로필 이미지
Minkoo Lee

작성한 질문수

질문하기