2.-팀플 규칙(주소명)-

강재영's avatar
Sep 26, 2024
2.-팀플 규칙(주소명)-
 
 

코드컨벤션(규칙)

v2로 진행 (post만 사용)
 

1. 리소스 명칭 (Resource Naming)

  • 규칙: 리소스 이름은 데이터베이스 테이블 이름을 기반으로 하며, 일반적으로 복수형을 사용합니다.
    • 사용자: /users
  • 예시:
    • 게시글: /boards
    • 댓글: /comments

2. 리소스의 식별 (Resource Identification)

  • 규칙: 각 리소스에 대한 고유 식별자는 URL의 Path Variable로 사용합니다.
  • 예시:
    • 특정 사용자를 조회: /users/{userId}
    • 특정 게시글을 조회: /boards/{boardId}
    • 특정 댓글을 조회: /comments/{commentId}
 
 
 
 
 

예시2 (값을 수정할때 post)

뒤에 /기능 붙이기

2.1.update 할때 /update

@PostMapping("/api/board/{id}/update")
 

2.2.delete 할때 /delete

@PostMapping("/api/board/{id}/delete")
 

2.3.insert 할때 /save

@PostMapping("/api/board/save")
 
 

예시2 (값을 참조할때 get) —- 고치자

규칙에 따른 URL 명명 요약

  1. 폼 페이지 (form 접미사):
      • 사용자가 데이터를 입력하거나 수정할 수 있는 폼(양식)을 제공하는 페이지에 사용합니다.
      • 예시:
        • 저장 폼: GET /api/board/save-form
        • 수정 폼: GET /api/board/{id}/update-form
  1. 단순 조회 페이지:
      • 사용자가 데이터를 입력하거나 수정하는 것이 아닌, 단순히 정보를 조회하거나 화면을 렌더링하는 경우에는 form 접미사를 붙이지 않습니다.
      • 예시:
        • 게시글 목록 조회: GET /board
        • 게시글 상세 조회: GET /board/{id}

1.form 접두사

1.1 게시판글을 저장가능한 페이지
@GetMapping("/api/board/save-form")
 
1.2 글을 저장하려고 버튼을 누를때
@PostMapping("/api/board/save")
 

2. 단순 조회

 
 

2.상세보기(리소스 식별: Path Variable로 표현 (/boards/{boardId}))

@GetMapping("/board/{id}")
 
  • 저장 폼 제공: GET /api/board/save-form
    • 새 게시글을 작성하기 위한 폼을 제공하는 화면으로 이동합니다. 이 요청은 데이터베이스에 변경을 가하지 않으며, 단순히 폼을 렌더링합니다.
  • 수정 폼 제공: GET /api/board/{id}/update-form
    • 기존 게시글을 수정하기 위한 폼을 제공하는 화면으로 이동합니다. 이 요청 역시 데이터베이스에 변경을 가하지 않으며, 수정 폼을 렌더링합니다.
  • 조회 페이지 제공: GET /board/{id}
    • 특정 게시글의 상세 정보를 조회하는 페이지로 이동합니다. 이 요청은 단순 조회이며, 데이터베이스 변경이 없습니다.
 
 
 
 
 

컨벤션 요약

  • 리소스 명칭: 복수형 사용 (/users, /movies)
  • 리소스 식별: Path Variable로 표현 (/movies/{movieId})
  • 계층적 관계: URL 경로로 표현 (/movies/{movieId}/comments)
  • 필터링 및 검색: Query String 사용 (/movies?title=제목)
  • 정렬 및 페이징: Query String 사용 (/movies?sort=-createdAt&page=2&size=20)
  • 상태 및 액션 표현: 명확한 동사 사용 (/auth/movies/{movieId}/reservations )
  • 소문자 및 하이픈: URL은 소문자로 작성하고 단어는 하이픈으로 구분 (/user-profiles)
  • 비동기통신(fetch, AJAX): /api (api/movies/now-showing ) : 지금상영중인영화
  • 인증 : /auth (/auth/movies/{movieId}/book)
  • 폼 페이지 (form 접미사): /users/save-form
  • 단순 조회 페이지: /movie
 
Share article

강재영 블로그