✔ 파일을 만들어 실습해보자!
더보기
1.
2.
3.
4.
5.
6.
7.
8.
9. 파일 생성
- app.js
< app.js >
import express from "express";
import morgan from "morgan";
import tweetsRouter from './router/tweets.js'
const app = express();
app.use(express, json()); // json로 연결
app.use(morgan("dev"));
app.use('/tweets', tweetsRouter); //tweetsRouter 미들웨어 등록
app.use((req, res, next) => {
res.sendStatus(404);
});
app.listen(8080);
</ app.js >
- .gitignor
node_modules/
.gitignore
package-lock.json
git에 안올릴 파일들 적어주기 |
- tweets.js
< tweets.js >
import express from "express";
const router = express.Router();
let tweets = [
{
id: '1',
text: '안녕하세요!',
createdAt: Date.now().toString(),
name: '김사과',
username: 'apple',
},
{
id: '2',
text: '반갑습니다!',
createdAt: Date.now().toString(),
name: '반하나',
username: 'banana',
}
];
// 해당 아이디에 대한 트윗 가져오기
// GET
// http://localhost:8080/tweets?username=:username
// http://localhost:8080/tweets?username=banana
router.get('/', (req, res, next) => {
const username = req.query.username;
const data = username
? tweets.filter((tweet) => tweet.username == username)
: tweets;
res.status(200).json(data);
});
// 글번호에 대한 트윗 가져오기
// GET
// http://localhost:8080/tweets/:id
// http://localhost:8080/tweets/1
router.get('/:id', (req, res, next) => {
const id = req.params.id;
const tweet = tweets.find((tweet) => tweet.id === id);
if(tweet){
res.status(200).json(tweet);
}else{
res.status(404).json({message: `${id}의 트윗이 없습니다`});
}
});
// 트윗하기
// POST
// http://localhost:8080/tweets
// name, username, text
// json 형태로 입력 후 추가된 데이터까지 모두 json으로 출력
// {
// "id":55,
// "text":"트윗을 추가했어요555",
// "name":"김사과",
// "username":"apple"
// }
router.post('/', (req, res, next) => {
const { text, name, username } = req.body;
const tweet = {
id: '10',
text: text,
createdAt: Date.now().toString(),
name: name,
username: username,
};
tweets = [tweet, ...tweets];
res.status(201).json(tweets);
});
// 트윗 수정하기
// PUT
// http://localhost:8080/tweets/:id
// http://localhost:8080/tweets/1
// id, username, text
// json 형태로 입력 후 변경된 데이터까지 모두 json으로 출력
// {
// "text":"트윗을 변경했어요!"
// }
router.put('/:id', (req, res, next) => {
const id = req.params.id;
const text = req.body.text;
const tweet = tweets.find((tweet) => tweet.id === id);
if(tweet){
tweet.text = text;
res.status(201).json(tweet);
}else{
res.status(404).json({message: `${id}의 트윗이 없습니다`});
}
});
// 트윗 삭제하기
// DELETE
// http://localhost:8080/tweets/:id:
router.delete('/:id', (req, res, next) => {
const id = req.params.id;
tweets = tweets.filter((tweet) => tweet.id !== id);
res.status(201).json(tweets);
});
export default router;
</ tweets.js >
1. ---------------------------------------------------------------------------------------------------------------------------- 2-1. 2-2. 2-3. -------------------------------------------------------------------------------------------------------------------------------- 3. ---------------------------------------------------------------------------------------------------------------------------------------- 4. ----------------------------------------------------------------------------------------------------------------------------------------------- 5. |
✔ git hub랑 연동해보자!
'Web > Node.js' 카테고리의 다른 글
12. Validate(데이터 검증) (0) | 2024.04.29 |
---|---|
11. 리팩토링 (0) | 2024.04.26 |
09. git 설치, github 간단 연동 (0) | 2024.04.25 |
08. Express 웹 프레임워크, route, morgan (0) | 2024.04.25 |
07. http 모듈, 템플릿 엔진 (0) | 2024.04.24 |