본문 바로가기

코딩/자바스크립트

자바스크립트, 8일차

 

// package.json

{
  "name": "day8",
  "version": "1.0.0",
  "description": "",
  "main": "1_post.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon 1_post",
    "pom" : "node 1_post"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "nodemon": "^3.1.0"
  },
  "dependencies": {
    "body-parser": "^1.20.2",
    "ejs": "^3.1.10",
    "express": "^4.19.2"
  }
}

 

import express from 'express';

const app = express();

app.use(express.json());

app.post('/posts', (req, res) => {
    console.log(req.body);
    res.status(201).send('글이 새로 등록되었어요');
})

app.listen(8080);

import express from 'express';
import fs from 'fs';
import fsAsync from 'fs/promises';

const app = express();

app.use(express.json());

//http://localhost:8080/file1
app.get('/file1', (req, res) => {
    fs.readFile('/file1.txt', (err, data) => {
        if(err) {
            res.sendStatus(404);
        }
    });
});

//http://localhost:8080/file2
// file2를 읽어 에러가 발생하면 404를 리턴
// 단, file2를 동기식으로 읽음
app.get('/file2', (req, res) => {
    try {
        const data = fs.readFileSync('/file2.txt');
    }catch(error){
        res.sendStatus(404)
    }
})

app.get('/file3', (req, res) => {
    fsAsync.readFile('/file3.txt')
    .catch((error) => {
        res.sendStatus(404);
    });
});

app.get('/file4', async (req,res) => {
    try{
        const data = await fsAsync.readFile('./file4.txt');
    }catch(error){
        res.sendStatus(404);
    }
});

app.use((req, res, next) => {
    const error = new Error('테스트 에러!');
    next(error);
})

app.use((error, req, res, next) => {
    console.error(error);
    res.status(500).json({message: '서버에러'});
});

app.listen(8080);

route()
- 특정 URL에 대한 미들웨어 및 라우팅 로직을 모듈화하고 그룹화할 수 있음
- 가독성을 향상시키고 유지 보수를 용이하게 함
- route() 메서드는 Router 객체를 반환. 해당 객체로 특정 URL 경로에 대한 라우팅을 설정

import express from 'express';

const app = express();

app
    .route('/posts')
    .get((req, res) => {
        res.status(200).send('GET :/posts');
    })
    .post((req, res) => {
        res.status(200).send('POST: /posts');
    })


app
    .route('/member/:id')
    .put((req, res) => {
        res.status(201).send('PUT: /member/:id')
    })
    .delete((req, res) => {
        res.status(200).send('DELETE: /member/:id');
    });
    
app.listen(8080);

 

 

morgan
- http 요청에 대한 로깅을 수행하기 위한 미들웨어
- express와 함께 사용되며 클라이언트로부터 오는 각각의 요청에 대한 정보를 로깅
- 요청 HTTP 메서드 ,발생한 URL, IP주소, 응답상태코드, 데이터의 큭를 알 수 있음
- 옵션: common, short, tiny, dev, combined

import express from 'express';
// npm i morgan
import morgan from 'morgan';
import userRouter from './routes/user.js';

const app = express();

app.use(express.json());
app.use(morgan('combied'));

// http://localhost:8080/users
app.use('/users', userRouter);

app.listen(8080);
import express from 'express';

const router = express.Router();

router.use((req, res, next) => {
    console.log('users에 존재하는 미들웨어!');
    next();
});

// http://localhost:8080/users (GET)
// 회원정보 보기
router.get('/', (req, res) => {
    res.status(200).send('GET: /users 회원정보보기');
});

// http://localhost:8080/users (POST)
// 회원가입
router.post('/', (req, res) => {
    res.status(201).send('POST: /users 회원가입');
});

// http://localhost:8080/users (PUT)
// 정보수정
router.put('/:id', (req, res) => {
    res.status(201).send('put: /users/:id 정보수정');
});

// http://localhost:8080/users (DELETE)
// 회원탈퇴
router.delete('/:id', (req, res) => {
    res.status(201).send('DELETE: /users/:id 회원탈퇴');
});

export default router;

 

 

'코딩 > 자바스크립트' 카테고리의 다른 글

자바스크립트, 7일차  (0) 2024.04.24
자바스크립트_혼자서_공부하기 part 1  (0) 2024.04.24
자바스크립트, 6일차  (0) 2024.04.23
자바스크립트, 5일차  (0) 2024.04.19
자바스크립트, 4일차  (1) 2024.04.18