SMALL
✔ 파일을 만들어 실습해보자!
더보기
![](https://blog.kakaocdn.net/dn/ca63cP/btsGWISx3pF/VMSriYrLR3ncnXofq7YIuk/img.png)
프로젝트 폴더에 Client, Server 파일 만들기
![](https://blog.kakaocdn.net/dn/PVLYj/btsGXk4LzD3/PIeeFDRuf3ip7Kj9XxkRk1/img.png)
비쥬얼 스튜디오에서 서버 폴더 열기
![](https://blog.kakaocdn.net/dn/y2f5c/btsGWUkYaBU/QwhWYSxqeKbApH6KbVhWw0/img.png)
터미널 입력: Git init
![](https://blog.kakaocdn.net/dn/kFiox/btsGWKQrsuR/JosRXhW2qkwxgB6p6mtamK/img.png)
npm init -y 입력
![](https://blog.kakaocdn.net/dn/cPqIFT/btsGYNY9Wap/XK7eaOIqBeHRiJGkblKRwk/img.png)
package.json 파일에서 "type" : "module" 넣기
![](https://blog.kakaocdn.net/dn/bf0YP6/btsGXZsgeiX/fX3aDtj5V0OxktQon7mNZK/img.png)
package.json 파일에서 "start":"nodemon app" 입력
![](https://blog.kakaocdn.net/dn/bIHQIB/btsHmY1CbqT/9CPG48e0abeUHJJtwihqI1/img.png)
"main":"app.js"로 수정
![](https://blog.kakaocdn.net/dn/cb2Bjs/btsGX1jh6CO/HOpyhzPFhxKXiHiDAm81MK/img.png)
terminal 에서 npm i nodemon --save-dev 입력
![](https://blog.kakaocdn.net/dn/vAWJJ/btsGWLV5fMk/ppiUZg8PrObUroIOBuWZfk/img.png)
terminal에서 npm i express 입력
![](https://blog.kakaocdn.net/dn/sHuLb/btsGXlCzfaf/oyiAJKIZcphMqwDxsedobK/img.png)
terminal에서 npm i moran 입력
![](https://blog.kakaocdn.net/dn/JhjRR/btsGYPbCrkA/f0tbUeKI8O3Xwu67MbuX50/img.png)
1.
![](https://blog.kakaocdn.net/dn/ca63cP/btsGWISx3pF/VMSriYrLR3ncnXofq7YIuk/img.png)
2.
![](https://blog.kakaocdn.net/dn/PVLYj/btsGXk4LzD3/PIeeFDRuf3ip7Kj9XxkRk1/img.png)
3.
![](https://blog.kakaocdn.net/dn/y2f5c/btsGWUkYaBU/QwhWYSxqeKbApH6KbVhWw0/img.png)
4.
![](https://blog.kakaocdn.net/dn/kFiox/btsGWKQrsuR/JosRXhW2qkwxgB6p6mtamK/img.png)
5.
![](https://blog.kakaocdn.net/dn/cPqIFT/btsGYNY9Wap/XK7eaOIqBeHRiJGkblKRwk/img.png)
![](https://blog.kakaocdn.net/dn/bf0YP6/btsGXZsgeiX/fX3aDtj5V0OxktQon7mNZK/img.png)
![](https://blog.kakaocdn.net/dn/bIHQIB/btsHmY1CbqT/9CPG48e0abeUHJJtwihqI1/img.png)
6.
![](https://blog.kakaocdn.net/dn/cb2Bjs/btsGX1jh6CO/HOpyhzPFhxKXiHiDAm81MK/img.png)
7.
![](https://blog.kakaocdn.net/dn/vAWJJ/btsGWLV5fMk/ppiUZg8PrObUroIOBuWZfk/img.png)
8.
![](https://blog.kakaocdn.net/dn/sHuLb/btsGXlCzfaf/oyiAJKIZcphMqwDxsedobK/img.png)
9. 파일 생성
![](https://blog.kakaocdn.net/dn/JhjRR/btsGYPbCrkA/f0tbUeKI8O3Xwu67MbuX50/img.png)
- 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랑 연동해보자!
![](https://blog.kakaocdn.net/dn/MTHHW/btsGYNSn3V0/s9LXprVMMbVdGXb5PTTYuk/img.png)
![](https://blog.kakaocdn.net/dn/bl9J9q/btsGYyAZEEA/TljotCkpEkdpTGUVOtwbJ1/img.png)
'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 |