| Create Read API 개발
Read 전체 데이터 다 조회하기
// ** Create Read */
import * as express from "express";
import { Cat, CatType } from "./app.model";
const app: express.Express = express();
//* logging middleware
app.use((req, res, next) => {
console.log(req.rawHeaders[5]);
console.log("this is logging middleware");
next();
});
//* READ 고양이 전체 데이터 다 조회
app.get("/cats", (req, res) => {
try {
const cats = Cat;
res.send({
success: true,
data: {
cats,
},
});
} catch (error) {
res.send({
success: false,
error: error.message,
});
}
});
status 를 이용하여 상태코드를 적용할 수 있다
- 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다.
- 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
- 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
- 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
- 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.
app.get("/cats", (req, res) => {
try {
const cats = Cat;
res.status(200).send({
success: true,
data: {
cats,
},
});
} catch (error) {
res.status(400).send({
success: false,
error: error.message,
});
}
});
위 처럼 res.status(400).send() 와 같이 status를 쓰고 그안에 코드번호를 넣어주면된다
에러를 일부러 넣어서 확인해보자
app.get("/cats", (req, res) => {
try {
const cats = Cat;
throw new Error("db connect error");
res.status(200).send({
success: true,
data: {
cats,
},
});
} catch (error) {
res.status(400).send({
success: false,
error: error.message,
});
}
});
Read 특정 데이터 조회하기
특정데이터를 id값을 이용하여 조회하고싶다고 가정하자
app.get("/cats/fsduifh", (req, res) => {
코드
});
당연히 위와 같은 방식으로
하나하나 아이디에 해당하는 값을 정적으로 만들어놓을 수는 없으니
동적으로 id값을 받을 수 있게 해야한다
그것을 바로 동적라우팅 이라고한다
app.get("/cats/:id", (req, res) => {
try {
const params = req.params;
console.log(params);
const cat = Cat.find((cat) => {
return cat.id === params.id;
});
res.status(200).send({
success: true,
data: {
cat,
},
});
} catch (error) {
res.status(400).send({
success: false,
error: error.message,
});
}
});
위와같이 라우트 경로 부분에
:id
이런식으로 :(콜론)파라미터명 입력하면
reqest에 파라미터 정보가 함께 넘어가게 된다
req.params를 통해 파라미터값을 빼올 수 있다.
그리고 find메서드를 사용해서 순회하여 일치하는 id값에 해당하는 데이터를 받아서 출력하면된다
:id 라고쓰긴했지만 Get 방식 키벨류 값 형식이 아닌 그냥 냅다 문자열 줘버리면 그게 파라미터가 되어버림
:id 말고 그냥 :param해도 될듯하다
그럼 위와 같이 postman과 콘솔에 잘 출력되는것을 확인할 수 있다
Create 새로운 데이터 추가
보통 insert같은 경우 HTTP METHOD로 POST를 사용한다
그래서 post라우터를 사용해야하고
post 같은 경우 데이터를 body에 json형태로 담아서 보내게된다
아래 코드를 보자
app.post("/cats", (req, res) => {
try {
const data = req.body;
console.log(data)
res.status(200).send({
success: true,
data: {},
});
} catch (error) {
res.status(400).send({
success: false,
error: error.message,
});
}
});
콘솔에 data가 undefiened가 출력 된다
express는 기본적으로 json 객체를 읽을 수 없어서
express에서 body를 읽을 수 있도록 middleware를 추가해줘야한다
//* json middleware
app.use(express.json());
다시 post요청을 해보면 콘솔창을 통해 데이터가 서버에 잘 넘어 오는것을 확인 할 수 있다
이제 이 새로운 데이터를 db에 저장하면 된다
app.post("/cats", (req, res) => {
try {
const data = req.body;
console.log(data);
Cat.push(data); // create
res.status(200).send({
success: true,
data: {},
});
} catch (error) {
res.status(400).send({
success: false,
error: error.message,
});
}
});
이런 방식으로 진행이되고
다음부터는 몽고db 와 같은 실제 db 서버에 데이터를 주고받는 방식으로 진행할 것이다
'웹 개발 > 🟩 Node.js' 카테고리의 다른 글
Express | Update Delete API 개발 (0) | 2023.06.18 |
---|---|
Express | route분리, 모듈화 (0) | 2023.06.18 |
Express | express에서 미들웨어설정하기 (0) | 2023.06.13 |
Express | 데이터 모킹 (0) | 2023.06.13 |
Express | express, ts 개발 환경 셋업, helloworld출력하기 (0) | 2023.06.12 |