본문 바로가기
Back-end/디지몬 프로젝트

Digimon project : 백엔드 프로젝트 - API 명세

by hsloth 2023. 6. 6.

지난 포스팅에서 초기 설계를 대충 끄적여봤다!

https://suloth.tistory.com/112

 

Digimon project : 백엔드 프로젝트 - 초기 설계

일단, 프로젝트를 진행하기에 앞서 간단하게 초기 설계를 해보았다. 아직은 정확히 어떤 기능이 필요하고 해당 기능이 어떤식으로 동작하는지에 대한 감이 잡히지 않아 자세하게 적지는 못했다

suloth.tistory.com

이번 포스팅에서는 API 명세를 작성해 보았다.

참고로! 내멋대로 작성한 것이니 많은 참고는 하지 않길 바란다.


API Specification


Admin


로그인

POST /api/v1/auth/admin-login

  • 어드민 로그인(jwt)
  • 주의사항 : 같은 email로 5번 연속 로그인 실패시 30분 동안 로그인 금지 혹은 Captcha
  • body : [email, password]
  • data : [accessToken, refreshToken]

본인 정보 확인

Get /api/v1/admin/:id

  • 어드민이 본인의 정보를 확인한다.
  • self-login : true
  • data : [adminId, gradeId, email, firstName, middleName, lastName, nickname, introduction, birth, emailReception, createdAt, genderId]

비밀번호 변경

Put /api/v1/admin/:id/pwd

  • 어드민이 본인의 정보를 수정한다.
  • self-login : true
  • body : [password]
  • redirect : Get /api/v1/admin/:id
  • data : [affected, adminId]

닉네임 변경

Put /api/v1/admin/:id/nickname

  • 어드민 본인의 닉네임을 변경한다.
  • self-login : true
  • body : [nickname]
  • redirect : Get /api/v1/admin/:id
  • data : [affected, adminId]

본인 정보 변경

Put /api/v1/admin/:id

  • 비밀번호, 닉네임을 제외한 정보를 변경한다.
  • self-login : true
  • body : [firstName, middleName, lastName, introduction, birth, emailReception, genderId]
  • redirect : Get /api/v1/admin/:id
  • data : [affected, adminId]

어드민 목록 확인

Get /api/v1/admin/list

  • login : false
  • 어드민들의 목록을 불러온다.
  • data : [Admin[nickname, id]]

어드민 정보 확인

Get /api/v1/admin/:id/info

  • 어드민의 자기소개와 작성글을 불러온다.
  • login : false
  • data : [id, nickname, introduction, MainPosting[]]

MainPosting


게시글 작성

Post /api/v1/main-posting

  • self-login : true
  • body : [title, content, categoryId]
  • redirect : Get /api/v1/main-posting/:id
  • data : [created, mainPostingId]

게시글 수정

Put /api/v1/main-posting/:id

  • self-login : true
  • redirect : Get /api/v1/main-posting/:id
  • data : [affected, mainPostingId]

게시글 삭제

Delete /api/v1/main-posting/:id

  • self-login : true
  • redirect : Get /api/v1/main-posting/list
  • data : [affected]

게시글 목록 읽기

Get /api/v1/main-posting/list

  • login : false
  • data : [MainPosting[id, title, createdAt, categoryId, adminId]]

게시글 상세 읽기

Get /api/v1/main-posting/:id

  • login : false
  • data : [title, content, createdAt, categoryId, adminId]

메인 페이지 카테고리 가져오기

Get /api/v1/main-posting/category/main

  • 공지사항을 제외한 글들을 불러와야 된다.
  • login : false
  • data : [MainPosting[id, title, MainPostingCategory[id, name, parentId, orderId]]]

MainPostingCategory


  • 주의
    • 부모가 있는 카테고리는 orderId가 null이어야 한다.
    • parentId와 orderId는 exclusive or 관계다.

카테고리 생성

Post /api/v1/main-posting/category

  • required : { grade : master }
  • self-login : true
  • body : [name, parentIt?, orderId?]
  • redirect : 메인 페이지
  • data : [created]

카테고리 목록 가져오기

Get /api/v1/main-posting/category/list

  • login : false
  • data : [MainPostingCategory[name, id, parentId, orderId]]

카테고리 이름 수정

Put /api/v1/main-posting/category/:id/name

  • login : true
  • body : [name]
  • redirect : 카테고리 수정 페이지
  • data : [affected]

카테고리 부모 변경

Put /api/v1/main-posting/category/:id/parent

  • login : true
  • body : [parentId]
  • redirect : 카테고리 수정 페이지
  • data : [affected]

카테고리 순서 변경

Put /api/v1/main-posting/category/:id/order

  • login : true
  • body : [orderId]
  • redirect : 카테고리 수정 페이지
  • data : [affected]

카테고리 삭제

Delete /api/v1/main-posting/category/:id

  • login : true
  • redirect : 카테고리 수정 페이지
  • data : [affected]