[RestAPI 개발기] 4. API 주소 설계

편준민's avatar
May 07, 2025
[RestAPI 개발기] 4. API 주소 설계

URL 설계 시 컨벤션 정하기

💡
API 주소를 http 프로토콜에 맞춰서 URL 컨벤션 설계하기 (코드를 작성하는 회사, 학원에 따라 다름)
  • 인증이 필요한 경우는 URL에 /s 붙이기
  • JSON 데이터를 보내는 경우에는 URL에 /api 붙이기

전세계 공통 컨벤션
  • User의 회원가입, 로그인, 로그아웃에는 JSON데이터를 반환하여도 /join /login /logout을 사용한다.
  • 메인페이지의 경우에는 URL을 2개를 지정해준다.
    • 예시로 게시글의 목록을 보여주는 화면이 메인일 경우
      • @GetMapping({"/", "/api/board"}) 처럼 URL 2개를 지정해준다.
      • /를 사용할 경우에는 아무것도 붙이지 않음

인증 시에 URL 주의사항

public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String uri = request.getRequestURI(); HttpSession session = request.getSession(); User sessionUser = (User) session.getAttribute("sessionUser"); if (sessionUser == null) { if (uri.contains("/api")) { throw new ExceptionApi401("인증이 필요합니다") } else { throw new Exception401("인증이 필요합니다"); } }
  • 수정 전 코드이다. 하지만 uri를 비교할 때 현재는 contains를 사용하는데 만약 contains(”/s”)로 비교하여 오류를 강제로 발동시키게 될 경우에는, /s/api/service 처럼 처음에 /s로 시작하지 않아도 throw가 실행 될 수 있다.
  • 이것을 방지하기 위해서는 아래의 코드처럼 startsWith을 사용해야한다. 그러면 처음이 /s 일 경우에만 throw가 실행이 된다.
if (uri.startsWith("/s")) { if (sessionUser == null) throw new Exception401("인증이 필요합니다"); }
Share article

YunSeolAn