사고쳤어요
[Node.js] 과일 조회 서비스 구현하기 본문
const express = require("express");
const app = express();
const fruits = [
{ id: 1, name: "apple" },
{ id: 2, name: "banana" },
{ id: 3, name: "watermelon" },
{ id: 4, name: "strawberry" },
];
다음과 같이 과일들의 정보가 저장된 배열이 있고, 과일 전체를 조회하는 GET 요청과 과일 개별을 조회하는 GET 요청을 작성하여 보자.
// 과일 전체 조회
app.get("/fruits", (req, res) => {
res.json(fruits);
});
먼저 과일 전체는 어렵지 않다. 단순히 fruits를 전송해주면 된다.

// 과일 개별 조회
app.get("/fruits/:id", (req, res) => {
let { id } = req.params;
var fruit = "";
fruits.forEach((fruit) => {
if (fruit.id == id) {
fruit = res.json(fruit);
}
});
res.json(fruit);
});
하지만 과일 개별은 조금 까다롭다.
fruits라는 배열의 id를 조회하여 그 값이 일치해야 하기 때문이다.
위 코드에서는 forEach()를 사용하여 하나하나 id를 비교해가며 id에 해당하는 과일을 찾아 리턴하였다.
app.get("/fruits/:id", (req, res) => {
let { id } = req.params;
var fruit = fruits.find(fruit => fruit.id == id);
res.json(fruit);
});
하지만 친절하게도 javascript에는 find라는 함수가 있다.
find()를 통해 foreach에서 5줄로 작성했던 코드를 단 한 줄로 작성할 수 있게 되었다.
app.get("/fruits/:id", (req, res) => {
let { id } = req.params;
var fruit = fruits.find((fruit) => fruit.id == id);
if (fruit) {
res.json(fruit);
} else {
res.status(404).send(`${id}에 해당되는 값이 없습니다.`);
}
res.json(fruit);
});
여기서 더 나아가, 만약 id에 해당하는 fruit가 존재하지 않는 경우 res.status(404)를 통해 예외 처리를 진행해주면 끝이다.

Postman에서도 404에러와 함께 메시지가 잘 출력되는 것을 볼 수 있다!
const express = require("express");
const app = express();
const fruits = [
{ id: 1, name: "apple" },
{ id: 2, name: "banana" },
{ id: 3, name: "watermelon" },
{ id: 4, name: "strawberry" },
];
// 과일 전체 조회
app.get("/fruits", (req, res) => {
res.json(fruits);
});
// 과일 개별 조회
app.get("/fruits/:id", (req, res) => {
let { id } = req.params;
// var fruit = "";
// fruits.forEach((fruit) => {
// if (fruit.id == id) {
// fruit = res.json(fruit);
// }
// });
var fruit = fruits.find((fruit) => fruit.id == id);
if (fruit) {
res.json(fruit);
} else {
res.status(404).send(`${id}에 해당되는 값이 없습니다.`);
}
res.json(fruit);
});
app.listen(3000);'웹 풀스택' 카테고리의 다른 글
| [Node.js] 유튜브 서비스 - 회원 개별 조회, 탈퇴(GET, DELETE) (0) | 2025.02.19 |
|---|---|
| [Node.js] 유튜브 서비스 - 회원가입 기능(POST) (0) | 2025.02.19 |
| [Node.js] 유튜버 조회 서비스 - 유튜버 수정(PUT) (0) | 2025.02.18 |
| [Node.js] 유튜버 조회 서비스 - 유튜버 삭제(DELETE) (1) | 2025.02.18 |
| [Node.js] 유튜버 조회 서비스 - 전체 유튜버 조회(forEach) (0) | 2025.02.18 |