상세 컨텐츠

본문 제목

[Node.js] 블로그 웹사이트 만들기-0. 요구사항 명세서 작성하기 (RAEDME.md)

IT 공부/백엔드(Back-end)

by 듀_77 2022. 1. 5. 16:02

본문

반응형

 

노션 교재참조

 

1. 블로그 api 요구사항 명세서 

-README.md에 적기

 

-터미널 명령어

폴더 경로
터미널 명령어

mkdir 011_blog_api

cd 011

-> 011 쓰고 tab누르면, "폴더이름": 자동완성

touch README.md

-> 요구사항 적어보기

 

2. README.md에 요구사항 명세서 작성

# Data 구조 

## 게시물 Data Schema (테이블 1)

[블로그 게시물에 들어온 상황: 만들고 싶은 데이터 정리]
* id (고유, 게시물번호로 사용, 12314939693869352 형태)
* title
* content
* section (카테고리)
* pubDate (publish date)
* modDate (modify date)
* viewCount (조회수) 
* like

// 이미지는 모듈을 연결시켜야해서 일단 뺀다.
// viewCount는 0부터 시작
(접속한 순간부터 count를 올릴 예정)

## 로그인 Data Schema (테이블 2)
* id (고유, 12034915929422401)
* email (고유, 로그인 id로 사용)
* pw
* username
* nickname
* sex (성별, 선택기능)
* phone (전화번호, 선택기능)
* iplocation (사용자에게 보이지 않는 정보, 서버 개발자에게만 보인다.)

Data 구조 

Data Schema, ERDCloud와 같은 툴로 시각화한 후, 코딩을 한다.

- 시각화없이, 문서로 간단하게 작성해도 가능

 

Schema

DB를 배우면 Schema가 뭔지 알게 된다.

- 스키마: 어떤 형식으로 데이터를 저장할까.

 

## 게시물 Data Schema (테이블 1)

## 로그인 Data Schema (테이블 2)

 

※ 테이블1,2 : 데이터를 조회할 수 있는 데이터 단위

 

## 게시물 Data Schema (테이블 1)

* id (고유, 게시물번호로 사용, 12314939693869352 형태)
* title
* content
* section (카테고리)
* pubDate (publish date)
* modDate (modify date)
* viewCount (조회수) 
* like

id, email

- id와 emial은 고유해야한다.
- id (고유, 12034915929422401) 고유의 어떤 숫자 

(DB에서 식별할 수 있는 id를 자동생성한다.)

 

iplocation

1시간전에 제주도에서 접속했는데, 필리핀에서 접속하면 보안경고 해줘야함.

-> 보안경고를 phone으로 할지, email을 할 지도 정해주기.

 

like

// 좋아요, 싫어요는 기능 넣을 때 잘 판단해야 한다. (회의를 잘 해보아야한다.)

 

phone

// phone이 필수면, 가입 안할 사람 많음
(메이저사이트가 아니면, 웬만하면 email로 비밀번호찾기 하는 이유)


→ 회원에게 요구하는 기능이 많으면, 잘 안하게 됨.

반응형
Data 구조

게시물 Data Schema

* id (고유, 게시물번호로 사용, 1230981239081234 형태)
* title
* content
* section
* pubDate
* modDate
* viewCount

로그인 Data Schema

* id(고유, 1230981239081234, 형태)
* email(고유, 로그인 id로 사용)
* pw
* username
* nickname
* sex (선택)
* phone (선택)
* iplocation (사용자에게 보이지지 않는 정보)

API 명세

* API 명세에서 CRUD는 필수 입니다. 토이프로젝트에서도 4개의 동작은 꼭 하게 해주세요.
GET (요청)
* / - 메인화면 + 최근 게시물 3개
* /about - 내 소개
* /blog - 블로그 글 리스트 전부
* /write - 로그인시에만 활성화(생성, 수정) 
    * write를 하고 POST로 값을 넘겨 글 작성이 DB에 성공적으로 저장된 경우 -> /blog로 이동
    * 저장이 실패한 경우 -> 내가 쓰고 있던 글을 그대로 보여줘야 합니다. (삭제X)
* /blog/:id - 블로그 상세 글, viewcount가 += 1
* /blog/?section=:section - 해당 섹션만 모아 볼 수 있도록

POST (생성)

/write
만약 내가 작성한 게시물로 이동해야 한다면 : title, content, section (날짜는 서버에서 처리)
만약 게시글 목록으로 이동해야 한다면 : success
PUT (수정)
* /blog/:id - title, content, section (날짜는 서버에서 처리), 로그인한 사용자만 해당 게시글 수정

DELETE (삭제)
* /blog/:id - 삭제 완료 -> blog(게시물 목록)로 리다이렉트

API 요구사항 명세서

CRUD는 API에서 필수 (토이프로젝트에서도, 밑에 4가지는 필수)
    // CRUD 등록조회수정삭제

 

#GET

- 사용자가 URL을 입력해서 들어온다.
    - 버튼을 클릭했을 때, url로 이동되게 할 때 get방식 사용

 

- 메인화면 + 최근 게시물 3개

무료템플릿의 게시글 수가 3개

https://startbootstrap.com/theme/clean-blog

 

Clean Blog - Bootstrap Blog Theme - Start Bootstrap

Like our free products? Our pro products are even better! Go Pro Today!

startbootstrap.com

 

4. /write - 로그인시에만 활성화(생성, 수정)
    ① write로 하고 POST로 값을 넘겼을 경우 (글 작성이 성공적으로 저장된 경우) -> /blog로 이동
    ② 저장이 실패한 경우 -> 내가 쓰고 있던 글을 그대로 보여줘야 합니다. (기존 작성글 삭제x)
    ③ /blog/:id - 블로그 상세 글
    ④ /blog/?section=:section - 해당 섹션만 모아 볼 수 있도록
    
    //id,section은 변수처리할 예정

/write - 로그인시에만 활성화(생성, 수정)

*게시판 → 게시글 작성 버튼 click 후 경로

1. 작성된 글로 가게 하기

2. 블로그 글 목록으로 가게 하기

 

→ 게시글 작성 button을 누른 후,

내가 쓴 게시글을 한번 더 보고 싶어하는 사람이 있고

게시글 목록을 보고 싶은 사람이 있기 때문에 개인취향

 

저장이 실패한 경우

기존 작성글 그대로 보여주고, 임시저장 처리

임시저장 같은 건, 회의에서 나오지 않을 경우 개발자가 신경써야 한다.

임시저장: 실패시 내가 썼던 게시글로 갈 수 있게끔 조치 

 

/blog/:id - 블로그 상세 글

- id가 게시물 번호 id로 나온다. 

id(고유 게시물 번호) : 12314939693869352 형태

 

 /blog/?section=:section 

해당 섹션만 볼 수 있다 ex) 여행카테고리

 

www.naver.com/blog/?section=it
// section이라는 변수에 it가 있다.
// section으로 it를 뽑아낼 수 있다 

→ let section = 'it'

www.naver.com/blog/10
(/blog/:id)

→ let id = '10'

section=it

DB에서 section으로 검색

section의 it 값 추출

## POST (글 작성)

* /write
    1. 만약 내가 작성한 게시물로 이동해야 한다면 : title, content, section (날짜는 서버에서 처리)
    2. 만약 게시글 목록으로 이동해야 한다면 : success

## POST

post: 블로그 글을 작성하겠다.

 

→ 글을 생성하고 난 후,

작성한 게시물로 이동해야할 필요가 있는가?

 

웬만하면 "게시글 목록으로 이동" 하기

 

## PUT (수정)

* /blog/:id - title, content, section (날짜는 서버에서 처리), 로그인한 사용자만 해당 게시글 수정

## PUT

내 글은 나만 수정할 수 있도록,

title,content,section 가져오기.

 

경로: 내 글로 이동

(게시글 목록으로 이동 x)

- 수정이 제대로 되었는지, 게시글 확인

 

## DELETE (삭제)

* /blog/:id - 삭제 완료 -> blog(게시물 목록)로 리다이렉트

## Delete

삭제 완료되면 게시글 목록으로 이동

 

블로그api 전체 요구사항 명세서

 

반응형

관련글 더보기

댓글 영역