질문&답변
만일 실물을 택배로 배송해야 할 경우 주소지 입력하는 방법이 궁금해서요.
안녕하세요, 좋은하루님! 열심히 수강해주시고 이렇게 좋은 질문 남겨주셔서 감사합니다 😊 좋은 질문이에요! 답변이 조금 늦었는데 먼저 자세하게 답변 남겨주신 eggmun님께도 감사드립니다. 말씀해주신 내용이 정확합니다 😊 구현 주소 입력은 보통 직접 타이핑하게 하기보다는 카카오(Daum) 우편번호 서비스 같은 주소 검색 API 를 사용합니다. 카카오에서 제공하는 JavaScript를 사이트에 불러온 뒤 주소 검색 버튼과 연결하는 방식이에요. 버튼을 누르면 아래처럼 주소검색 팝업이 열리고, 사용자가 주소를 선택하면 우편번호와 기본주소 필드(직접 타이핑 불가 처리)가 자동으로 채워지게 하고, 그 밑에 상세주소 필드만 직접 입력하는 방식으로 구현하면 됩니다. 공식 가이드에 예제 코드까지 잘 나와 있어서 Claude Code에 “Kakao 우편번호 서비스 공식 가이드를 기준으로 배송지 추가 화면에 주소검색 기능을 연동해줘” 라고 요청하면 충분합니다. 모바일까지 고려한다면 새 창 팝업보다는 모달 안에 embed 방식으로 띄우도록 요청하는 것도 좋습니다. DB DB 구조에서 중요한 부분은 eggmum님이 답변해주신것처럼 회원이 현재 저장해둔 주소와 실제 주문 당시의 배송지를 구분하는 것 입니다. 주문 후 나중에 회원정보에 저장된 주소를 변경하더라도 이미 완료된 주문의 배송 주소까지 같이 바뀌면 안되기 때문에 주문이 발생할 때는 보통 수령인 이름 연락처 우편번호 기본주소 상세주소 그리고 추가로 배송메모(선택 입력) 정도를 주문 당시의 배송정보로 저장 합니다. 현재처럼 주문 1건당 배송지 1곳인 일반적인 구조라면 굳이 배송지 테이블을 따로 만들기보다는 orders 테이블에 배송 관련 컬럼을 추가하는 방식으로도 충분합니다. 예를 들면, users → 회원 기본정보 orders → 주문정보 + 주문 당시 배송정보 처럼 구성하고, orders 에 recipient_name , recipient_phone , shipping_postcode , shipping_address , shipping_address_detail 같은 컬럼을 추가하면 됩니다. 다만 서비스가 복잡해져서 한 주문의 상품을 여러 주소로 나눠 보내야 한다거나, 주문 하나가 여러 배송 건으로 분리되는 경우 에는 그때 order_shipping_addresses 나 shipments 같은 별도 테이블로 분리하는 구조를 고려할 수 있습니다. 그런데 처음부터 꼭 그렇게 복잡하게 만들 필요는 없어요. 만약 쿠팡처럼 사용자가 여러 배송지를 미리 저장하고 선택하는 기능까지 만들고 싶다면 user_addresses 같은 별도 테이블을 추가할 수도 있습니다. 이 경우에도 주문이 확정되는 순간 선택한 주소를 orders 에 주문 당시 배송정보로 복사해서 저장 하는 것이 안전합니다. UI/UX UI/UX적으로는 최근 쇼핑몰들은 회원가입할 때부터 주소를 필수로 받기보다는, 실제 첫 주문 단계에서 배송지 추가 를 통해 주소를 등록하는 방식을 많이 씁니다. 처음 등록한 주소는 기본 배송지로 설정하고, 이후 주문부터는 기본 배송지를 바로 보여주면서 변경하거나 새 배송지를 추가할 수 있게 만드는 식입니다. 예를 들면 세르지오 타키니 홈페이지를 참고해볼수도 있을 것 같아요 :) 여기도 이런 방식으로 구현되어있습니다. 정리하면, 주소 입력 → 카카오 주소검색 API 활용 배송정보 → 주문 시점의 주소를 orders 에 저장 복잡한 배송 구조가 필요해질 때만 별도 테이블 분리 이 정도로 생각하시면 됩니다 😊 이런 식으로 실제 서비스를 운영했을 때 필요한 기능까지 생각해보시는 게 정말 좋은 접근이에요. 만일 주소 구현하시다가 DB 구조나 주소 API 연결 부분에서 막히는 게 있으면 언제든 편하게 질문 남겨주세요!!
- 좋아요수
- 1
- 댓글수
- 4
- 조회수
- 76





