이 글에서는 일반적인 로그인 상황을 예시로 들어 API 서버가 클라이언트, 데이터베이스와 상호작용할 때 어떤 순서로 동작하고 데이터가 어떻게 이동하는 지에 대해서 알아도록 하겠다.
- 클라이언트 요청
- 사용자가 웹 브라우저나 모바일 앱을 통해 특정 작업을 요청한다.
- 클라이언트는 HTTP/HTTPS 요청을 생성하고 이를 API 서버로 보낸다.
- ex) 클라이언트가 사용자 로그인을 요청하면, 로그인 폼 데이터가 API 서버로 전송된다.
- API 서버 수신 및 처리
- API 서버는 클라이언트의 요청을 수신한다.
- 요청을 분석하고, 필요한 데이터를 추출한다.
- 인증 및 권한 검사를 수행하여 요청의 유효성을 확인한다.
- ex) API 서버는 로그인 요청을 수신하고, 사용자의 자격 증명을 확인한다.
- 비즈니스 로직 실행
- API 서버는 요청에 대한 비즈니스 로직을 실행한다.
- 비즈니스 로직에는 데이터 검증, 특정 작업 수행 등이 포함된다.
- ex) 서버는 사용자가 입력한 로그인 정보를 검증한다.
- 데이터베이스 접근
- 필요한 경우, API 서버는 데이터베이스에 접근하여 데이터를 조회하거나 변경한다.
- 데이터베이스 쿼리를 생성하고 실행하여 필요한 데이터를 가져오거나 업데이트한다.
- ex) 서버는 데이터베이스에서 사용자의 자격 증명(이메일, 비밀번호 해시)을 조회한다.
- 응답 생성
- API 서버는 데이터베이스에서 가져온 정보와 비즈니스 로직의 결과를 바탕으로 응답을 생성한다.
- 생성된 응답은 JSON, XML 등의 형식으로 작성된다.
- ex) 로그인 성공 여부에 따라 성공 메시지나 에러 메시지를 생성한다.
- 클라이언트로 응답 반환
- API 서버는 생성된 응답을 클라이언트로 반환한다.
- 클라이언트는 응답을 받아 화면에 결과를 표시하거나 다음 작업을 수행한다.
- ex) 로그인 성공 시, 클라이언트는 사용자 대시보드로 리다이렉션한다.
예제 시나리오: 사용자 로그인
- 클라이언트 요청
- 클라이언트: 로그인 폼 제출 → POST /api/login 요청 전송
- 데이터: { "username": "user1", "password": "pass123" }
- API 서버 수신 및 처리
- API 서버: 요청 수신, 데이터 파싱
- 인증 및 권한 검사
- 비즈니스 로직 실행
- 비즈니스 로직: 사용자 자격 증명 검증 로직 실행
- 데이터베이스 접근
- 데이터베이스 쿼리: SELECT * FROM users WHERE username = 'user1'
- 데이터베이스 응답: 사용자 정보 반환
- 응답 생성
- API 서버: 응답 생성 { "success": true, "message": "Login successful", "token": "abcdef12345" }
- 클라이언트로 응답 반환
- API 서버: 응답 반환
- 클라이언트: 응답 수신 후, 사용자 대시보드로 리다이렉션
기본적으로 API 서버와 클라이언트, 데이터베이스는 이러한 구조로 서로 상호작용하며 동작하게 된다.