Node.js발행일 2023. 1. 3.원본 https://blog.naver.com/jword_/222974143639 ↗

[AI스쿨] node js express 스크랩 데이터 REST형태로 API설계

[AI스쿨] node js express 스크랩 데이터 REST형태로 API설계 — #AI스쿨 #nodejs #expressjs #RESTAPI AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작...

#Node js#Naver Blog

#AI스쿨 #nodejs #expressjs #RESTAPI

​

AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다

학습법 이론

학습을 하기 이전, 명심해야할 학습법이 있다.

​

1.이해가지 않는다고 뒤돌아가 다시 보지 말 것

2.외우지 말라

=> 자주 봐서 외워짐을 당하라

=> 크롬을 통해 copy and paste하라

  1. 이해하는게 중요하다

=> 왜 생겨났는지?

=> 왜 사용하는지?

===> 응용이 가능해진다.

4.새로운 지식을 넣을땐 뇌를 비우자

스크랩한 데이터 RESTful API로 설계하기

이미지

데이터 스크랩

이전글에서 selenium을 사용하여 네이버 경제-포스터 데이터를 스크랩후 MYSql로 서버에 저장을 완료했습니다. 추가로 리빙-포스터도 스크랩하여 또 다른 테이블에 저장을 해두었습니다. 이제 해당 데이터들을 express js에서 불러올 수 있도록 API를 설계하겠습니다. (REST설계)

express js에서 데이터 호출하기

복잡할것 없이 간단하게 get호출 방식을 활용하여 /news/economy 경로에 경제-포스터 데이터를 불러오게 설정했습니다.

app.get("/news/economy", (req, res) => { connection.query( "select \ from economyDB", function (error, results, fields) { if (error) throw error; res.json(results*); } );});

이미지

리빙 데이터도 동일한 방식으로 구현했습니다.

app.get("/news/living", (req, res) => { connection.query( "select \ from livingDB", function (error, results, fields) { if (error) throw error; res.json(results*); } );});

이미지

GET방식은 웹브라우저 url로 간단히 데이터를 불러올 수 있습니다. API를 실행시키고 해당 url로 들어가니 데이터가 잘 불러와지는 것을 볼 수 있습니다.

​

클라이언트의 변수를 받아 데이터 내보이기

app.get("/news/economy/:id", (req, res) => { connection.query( "select \ from economyDB", function (error, results, fields) { if (error) throw error; let { id } = req.params; let count = id - 1; let resultId = results\[count\].id;​ if (id == resultId) { res.json(results\[count\]); } else { res.send("wrong id"); } } );});​​app.get("/news/living/:id", (req, res) => { connection.query( "select \ from livingDB", function (error, results, fields) { if (error) throw error; let { id } = req.params; let count = id - 1; let resultId = results\[count\].id;​ if (id == resultId) { res.json(results\[count\]); } else { res.send("wrong id"); } } );});

id값을 클라이언트 변수로 받은뒤, 사용자가 입력한 id값(숫자)과 서버에 저장된 데이터 객체의 id키값이 일치할 경우 해당 데이터가 불러와지도록 설계하였습니다.

​

이미지

이미지

역시나 GET방식이기에 url로 바로 테스트가 가능했습니다. 사용자가 입력한 id값과 일치하는 id키값을 가진 데이터가 불러와지는 것을 볼 수 있습니다.

​

클라이언트의 변수를 받아 데이터 삭제하기

데이터는 DELETE로 구현하였습니다. delete사용법

app.delete("/news/economy/:num", (req, res) => { connection.query( delete from economyDB where id=?, \[req.params.num\], function (error, results, fields) { if (error) throw error; const { num } = req.params;​ res.send("데이터를 삭제하였습니다"); } );});

delete의 경우 웹브라우저의 url로 확인이 불가능하므로, postman을 사용하여 확인했습니다. 복잡한 js로직을 짤필요없이, MySQL쿼리문을 사용하여 구현하면됩니다.

​

MySQL쿼리문에서도 클라이언트가 보낸 데이터를 변수로 받아 사용할 수 있습니다.

이미지

economy/1 데이터 제거 => 성공시 "데이터를 삭제하였습니다"문구

이미지

economy전체 경로를 GET해보면 id=1인 데이터가 사라진 것을 볼 수 있습니다.