[AI스쿨] node js express 스크랩 데이터 REST형태로 API설계
[AI스쿨] node js express 스크랩 데이터 REST형태로 API설계 — #AI스쿨 #nodejs #expressjs #RESTAPI AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작...
#AI스쿨 #nodejs #expressjs #RESTAPI
AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다
학습법 이론
학습을 하기 이전, 명심해야할 학습법이 있다.
1.이해가지 않는다고 뒤돌아가 다시 보지 말 것
2.외우지 말라
=> 자주 봐서 외워짐을 당하라
=> 크롬을 통해 copy and paste하라
- 이해하는게 중요하다
=> 왜 생겨났는지?
=> 왜 사용하는지?
===> 응용이 가능해진다.
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인 데이터가 사라진 것을 볼 수 있습니다.






