필요 API 스펙 정의
이제는 API 서버를 코딩해야겠다. (express 사용)
근데 뭘 코딩해야하지? 먼저 블로그에서 사용할 API 들을 정의해야겠지...
블로그에서는 어떤 API 를 사용하지? 결국 먼저 블로그 컨셉부터 대충이라도 정의해야겠지...
블로그 간단 구조
구조는 단순하게 가자.
- Menu 와 Article 이 존재한다.
- Menu 끼리 계층 구조를 가질 수 있으며, Menu 는 최대 하나의 부모를 가질 수 있다. (자식 Menu 의 개수에는 제한이 없다.)
- 자연스럽게 부모가 없는 Menu 는 최상단 Menu, 자식이 없는 Menu 는 leaf Menu 가 된다.
- Menu 계층 구조의 깊이는 최대 3 이다.
- leaf Menu 는 N개의 Article 을 가질 수 있다.
- Article 은 무조건 하나의 leaf Menu 에 속한다.
필요한 API 는?
일단 Menu 리스트 & Article 리스트를 가져오는 API 가 필요하겠지?
- GET /menus
- Menu 리스트 가져오기
- GET /articles
- Article 리스트 가져오기
먼저 Menu 와 Article 에 어떤 데이터들이 필요로 하는지 생각해보자.
Menu Data
- key
- Menu private key
- name
- Menu 명
- parent
- 부모 Menu key
- children
- 자식 Menu key 리스트
- articles
- 내가 가지고 있는 Article key 리스트
Article Data
- key
- Article private key
- title
- Article 제목
- contents
- Article 본문
- created
- Article 생성 날짜
- menu
- 내가 속한 Menu key
당연히 더 필요한 데이터가 있겠지만, 일단 Menu 와 Article 의 최소 조건은 요 정도가 아닐까?
지금까지의 내용을 바탕으로 /menus 와 /articles 의 세부 내용 정의를 하자.
아 참고로 모든 API 의 response 는 json 형식으로 리턴할거다.
추가로 Menu 는 몇개 안될 거기 때문에 그냥 모든 데이터를 한꺼번에 줘도 되는데, Article 은 N 개가 존재한다고 가정하면 모든 Article 을 한번에 가져오는 건 부하가 클 듯 하다. (낭비이기도 하고)
/articles 는 페이징 방식을 차용하자.
-
GET /menus
- request - 없음
- respone
- Menu 리스트
- Menu - {}
- key - string (not null)
- name - string (not null)
- parent - string (default: '')
- children - string [] (default: [])
- articles - string [] (default: [])
- ex)
[ {key: 'menu 0', name: 'menu 0', chilrend: [], articles['article 0', 'article 1', ...]}, {key: 'menu 1', name: 'menu 1', chilrend: ['menu 11', 'menu 12', ...], articles[]}, ... ]
-
GET /articles
- request - parameter
- pageSize - number (default: 10)
- 페이지당 article 개수
- page - number (default: 0)
- 현재 페이지
- menus - string (default: '')
- 타겟 Menu 리스트
- , 으로 Menu key 구분
- ex)
/articles?pageSize=10&page=0&menus=menu0,menu1
- pageSize - number (default: 10)
- response
- Article 리스트
- Article - {}
- key - string (not null)
- title - string (not null)
- contents - string (default: '')
- created - string (not null)
- YYYYMMDDHHMMSS
- menu - string (not null)
- ex)
[ {key: 'article 0', title: 'title', contents: 'contents', created: '19851031052222', menu: 'menu 0'}, {key: 'article 1', title: 'title', contents: 'contents', created: '19851031053333', menu: 'menu 0'}, ... ]
- request - parameter
Author And Source
이 문제에 관하여(필요 API 스펙 정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@crazydj/블로그-직접-만들기-대작전-필요-API-스펙-정의저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)