Data 구조(Data Schema, ERDCloud와 같은 툴로 시각화 합니다.)게시물 Data schema로그인 Data schemaAPI 명세GETPOST (생성)PUT (수정)DELETE (삭제)Source code
Data 구조(Data Schema, ERDCloud와 같은 툴로 시각화 합니다.)
게시물 Data schema
* id (고유, 게시물번호로 사용) * title * content * section * pubDate * modDate * viewCount
로그인 Data schema
* id(고유, 1230981239081234) * email(고유, 로그인 id로 사용) * pw * username * nickname * sex (선택) * phone (선택) * iplocation (사용자에게 보이지지 않는 정보)
API 명세
GET
* / - 메인화면 + 최근 게시물 3개 * /about - 내 소개 * /blog - 블로그 글 리스트 전부 * /write - 로그인시에만 활성화(생성, 수정) * write를 하고 POST로 값을 넘겨 글 작성이 DB에 성공적으로 저장된 경우 -> /blog로 이동 * 저장이 실패한 경우 -> 내가 쓰고 있던 글을 그대로 보여줘야 합니다. (삭제X) * /blog/:id - 블로그 상세 글 * /blog/?section=:section - 해당 섹션만 모아 볼 수 있도록
POST (생성)
* /write 1. 만약 내가 작성한 게시물로 이동해야 한다면 : title, content, section (날짜는 서버에서 처리) 2. 만약 게시글 목록으로 이동해야 한다면 : success
PUT (수정)
* /blog/:id - title, content, section (날짜는 서버에서 처리), 로그인한 사용자만 해당 게시글 수정
DELETE (삭제)
* /blog/:id - 삭제 완료 -> blog(게시물 목록)로 리다이렉트
Source code
011_blog_API\router// 파일이름 : 011_blog_API\app1.js // npm init --yes // npm i nunjucks express cors helmet morgan // npm i nodemon --save-dev // -> nodemon app1 으로 실행 가능 const nunjucks = require('nunjucks'); const express = require('express'); const cors = require('cors'); const morgan = require('morgan'); // 디버깅 const helmet = require('helmet'); // 보안 const blogRouter = require('./router/blog.js'); const app = express(); app.set('view engine', 'html'); nunjucks.configure('template', { autoescape: true, express: app, watch: true }); app.use(express.json()); app.use(helmet()); app.use(cors()); app.use(morgan('tiny')); app.use('/blog', blogRouter); app.get('/', (req, res) => { res.send('hello world') // res.render('test1.html', { // name : "hojun!", // age : 10 // }); }); app.use((req, res, next) => { res.sendStatus(404); }) app.use((err, req, res, next) => { console.log('애러났음!') console.log(err); res.sendStatus(500); }) app.listen(8080);
// 파일이름 : 011_blog_API\package.json { "name": "011_blog_API", "version": "1.0.0", "description": "", "main": "app1.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "cors": "^2.8.5", "express": "^4.17.1", "express-async-error": "0.0.2", "helmet": "^4.6.0", "morgan": "^1.10.0", "nunjucks": "^3.2.3" }, "devDependencies": { "nodemon": "^2.0.14" } }