Develop/Spring
-
사용자가 '좋아요' 버튼을 두 번 누르면 어떻게 될까?Develop/Spring 2025. 7. 25. 13:51
TL;DR안전한 '좋아요' 기능을 위해, 토글(toggle) 방식의 API 대신 중복 요청에도 결과가 동일한 멱등성 설계(예: POST로 생성, DELETE로 삭제)를 적용해야 합니다.1. '좋아요' 기능, 왜 멱등성이 중요할까? 🤔'좋아요' 버튼을 누르는 간단한 동작 이면에는 네트워크 오류나 사용자의 중복 클릭과 같은 잠재적 위험이 존재합니다. 만약 API가 이러한 중복 요청을 제대로 처리하지 못하면, 사용자의 의도와 달리 '좋아요'가 즉시 취소되거나 데이터가 꼬이는 문제가 발생할 수 있습니다. 멱등성이란?동일한 요청을 여러 번 보내도 언제나 같은 결과를 만들어내는 성질입니다. 신뢰성 있는 API를 만들기 위해 멱등성 설계는 선택이 아닌 필수입니다. ✅ 멱등성이 보장되는 메서드: GET, PUT,..
-
TDD 기반 테스트 코드 도입기Develop/Spring 2025. 7. 18. 17:00
TL;DR소프트웨어의 안정성을 높이고, 유지보수를 용이하게 하며, 궁극적으로는 총 개발 비용과 시간을 줄이기 위해 테스트 코드를 도입합니다. 들어가며 테스트 코드를 작성 하는 이유 1. 안정성 확보새로운 기능 추가나 코드 수정 시, 기존 기능이 고장 나는 것을 방지하는 안전망 역할을 합니다. 이를 통해 언제든 자신감을 갖고 코드를 변경할 수 있습니다. 2. 자동화 된 테스트로 시간 절약 가능Postman을 이용한 수동 API 테스트는 매번 직접 API를 호출하고 결과를 눈으로 확인해야 합니다. 코드가 복잡해지고 수정이 잦아질수록, 모든 API를 일일이 테스트하는 것은 매우 비효율적입니다.테스트 코드를 작성하면 이 모든 과정을 자동화하여, 단 몇 초 만에 수백 개의 테스트를 실행할 수 있습니다.기능..
-
JWT 인증 방식Develop/Spring 2022. 11. 18. 11:13
JWT 란? JSON Web Token(JWT)의 약어로 인증에 필요한 정보들을 담은 JSON 형태의 토큰 클라이언트와 서버 사이 통신 시 권한 인가(Authorization)를 위해 사용 JSON 데이터를 Base64 URL Encode를 통해 인코딩하여 직렬화 JWT토큰(Access Token)을 HTTP 헤더에 담아서 서버가 클라이언트를 식별하기 때문에 민감 정보를 토큰 안에 넣게 된다면 위험 JWT의 구조 Header: 토큰의 타입(typ)이나, 알고리즘(alg)을 저장 Payload: 토큰에서 사용할 정보의 조각(Claim) 저장 (실제 JWT 를 통해서 알 수 있는 데이터) iat : 토큰 발급시간 exp: 토큰 만료 시간 Signature: 서버에서 해당 토큰이 유효한지 아닌지를 구분 할 수..