<aside> 📎
</aside>
✈︎ 업무 배경
사용자의 요청에 대해 승인, 보류, 거절의 세 가지 상태를 정의하고, 이를 이메일로 안내하는 API를 개발하였습니다. 초기 설계에서는 POST HTTP 메소드를 사용하여 사용자의 상태를 저장하고 이메일을 발송하였으나, 멱등성이 고려되지 않아 상태가 반복적으로 변경되는 문제가 발생하였습니다.
✈︎ 업무 목표
✈︎ 업무 성과 및 의의
Entity Tag를 통한 멱등성 보장
@RequestHeader를 통해 If-None-Match 헤더를 사용하였습니다. 클라이언트가 가진 Etag와 기존에 저장된 Etag를 비교하여 리소스 변경 여부를 파악하였습니다. Etag가 동일하다면 리소스가 변경되지 않았기에, NOT_MODIFIED를 반환하여 멱등성을 보장하였습니다.
멱등한 POST API에 대한 구체적인 학습과 기록
해당 내용을 블로그에 정리하고, 문서화하였습니다. (관련 블로그)
Quill Aditor를 통한 자유로운 이메일 양식 지원
어드민 사용자가 유저에게 메일을 작성할 때, 텍스트 서식 조정, 이미지 삽입, 링크 추가 등의 편집 기능을 손쉽게 활용하도록 Quill Aditor를 구현하였습니다.
이를 해결하기 위해 Restful API의 멱등성 보장에 대해 학습하고, 기록하였습니다.
멱등키 헤더
멱등키를 API 요청 헤더에 포함합니다.서버는 같은 멱등키가 2 번 이상 요청되면 중복으로 판단한 뒤, 실제로 처리하지 않습니다. 요청마다 헤더에 멱등키가 있는지 확인하고, 멱등키 저장을 위한 DB에서 이를 확인합니다. 요청에서 이미 존재하는 멱등키가 발견된다면 실제 요청을 진행하지 않고 저장된 응답 데이터를 돌려줍니다.
결제 취소 API를 해당 방법으로 구현한 토스페이먼츠 사례를 참고하였습니다.