본문 바로가기
이것저것 공부

Swagger API 사용법 번외(CRUD 설명)

by 성동구불주먹 2024. 11. 25.

 

💡crud.js 파일을 잠깐 훑어보자

 

 

코드 상단에 빈 배열을 가진 items라는 변수와,

1이라는 숫자를 가진 idCounter 변수가 선언되어 있다.

 

let items = [];
let idCounter = 1;

 


 

[ POST(create) 방식]

router.post('/items', (req, res) => {
  const { name } = req.body;
  const newItem = { id: idCounter++, name };
  items.push(newItem);
  res.status(201).json(newItem);
});

 

클라이언트가 POST 요청으로 /items 경로에 데이터를 전송한다.

전송된 데이터 { name }을 읽고 새로운 아이템 객체를 생성한다.

새 아이템을 items 배열에 추가한다.

응답 상태 코드는 201이다.

POST는 주로 데이터 추가(Create) 작업을 처리하는 데 사용된다.

 


 

[ GET(select all) 방식]

router.get('/items', (req, res) => {
  res.json(items);
});

 

클라이언트가 GET 요청으로 /items 경로에 접근한다.

서버에 저장된 items 배열의 모든 데이터를 조회한다.

조회한 데이터를 JSON 형식으로 클라이언트에게 반환한다.

응답 상태 코드는 200 ok이다.

GET은 주로 데이터 검색(Select) 작업을 처리하는데 사용된다.

 


 

[ GET(select an item by ID) 방식]

 

router.get('/items/:id', (req, res) => {
  const id = parseInt(req.params.id, 10);
  const item = items.find((i) => i.id === id);
  if (!item) {
    return res.status(404).json({ error: 'Item not found' });
  }
  res.json(item);
});

 

클라이언트가 GET 요청으로 /items/:id 경로에 접근한다.

(경로의 :id는 클라이언트가 요청 시 지정하는 특정 아이템의 ID이다)

요청 경로에서 id값을 추출하고, 이를 정수로 변환한다.

서버의 items 배열에서 해당 ID와 일치하는 아이템을 검색한다.

검색결과가 없으면 404 Not Found와 함께 에러메시지를 반환한다.

검색결과가 있으면 해당 아이템을 JSON 형식으로 반환한다.

응답 상태 코드는 200 ok이다.

GET은 주로 데이터 검색(Select) 작업을 처리하는 데 사용된다.

 


 

[PUT(update) 방식]

 

router.put('/items/:id', (req, res) => {
  const id = parseInt(req.params.id, 10);
  const { name } = req.body;
  const item = items.find((i) => i.id === id);
  if (!item) {
    return res.status(404).json({ error: 'Item not found' });
  }
  item.name = name;
  res.json(item);
});

 

클라이언트가 PUT 요청으로 /items/:id 경로에 접근한다.

(경로의 :id는 클라이언트가 수정하려는 특정 아이템의 ID이다)

요청 경로에서 id 값을 추출하고, 이를 정수로 변환한다.

요청 본문(req.body)에서 새로운 name 값을 추출한다.

서버의 items 배열에서 해당 ID와 일치하는 아이템을 검색한다.

검색결과가 없으면 404 Not Found와 함께 에러메시지를 반환한다.

검색결과가 있으면 해당 아이템의 name값을 클라이언트가 보낸 값으로 수정한다.

수정된 아이템을 JSON 형식으로 반환한다.

응답 상태 코드는 200 ok이다.

 


 

[DELETE(delete) 방식]

 

router.delete('/items/:id', (req, res) => {
  const id = parseInt(req.params.id, 10);
  const itemIndex = items.findIndex((i) => i.id === id);
  if (itemIndex === -1) {
    return res.status(404).json({ error: 'Item not found' });
  }
  items.splice(itemIndex, 1);
  res.status(204).send();
});

 

클라이언트가 DELETE 요청으로 /items/:id 경로에 접근한다.

(경로의 :id는 클라이언트가 삭제하려는 특정 아이템의 ID이다)

요청 경로에서 id값을 추출하고, 이를 정수로 변환한다.

서버의 items 배열에서 해당 ID와 일치하는 아이템의 인덱스를 찾는다.

검색결과가 없으면 404 Not Found와 함께 에러메세지를 반환한다.

검색결과가 있으면, splice() 메서드를 사용해  해당 아이템을 items 배열에서 제거한다.

응답 상태 코드는 204 No Content로 삭제가 성공했음을 나타냄.

(본문 없이 빈 응답을 보낸다)

반응형