javaScript/nodeJs 22

nodejs express // #2 미들웨어, app.set, 에러처리

app.use((req, res, next)=>{ console.log('all request') next(); }) 이전에 이게 미들웨어라했는데 정확히는 app.use안에 들어가있는 함수가 미들웨어다. app.use('/about', (req, res, next)=>{ console.log('어바웃') next(); }) 이렇게 about에서만 실행되게 할수도 있다. app.use((req, res, next)=>{ console.log('all request') next(); // next안하면 다음라우터 안넘어감.. 그래서 렉걸린거였네.. }, (req ,res, next)=>{ console.log('hi2'); next(); }, (req ,res, next)=>{ console.log('hi3..

javaScript/nodeJs 2022.07.01

nodejs express // #1 서버 시작

express는 이미 사용해서 todoapp을 개발해봤기에 사실 아직까진 그닥 어렵지않은듯하다 라우터 분리와 로그인기능만 다시 좀 심도있게 보면 좋을듯 하다. 일단 시작하면서 원하는 폴더에 npm init을 치고 엔트리포인트만 설정한다. 그리고 npm install express 으로 모듈 깔아주고.. 암튼 이상태에서 server.js(엔트리포인트파일)로 nodemon 실행. const express = require('express'); const app = express(); const path = require('path') 기본모듈은 express 와 path가져왔다. app.listen(3000, ()=>{ console.log('서버 고고고') }); 3000포트에서 서버 실행 근데 여기서 a..

javaScript/nodeJs 2022.07.01

nodejs 서버 // http 서버 차근차근 -3 GET요청(axios)

get요청이 사실 post요청보다 쉬운데 먼저 post를 다룬 이유는 post로 적은 데이터를 서버에서 처리해서 브라우저에 띄워주게 했기 떄문이다. 또한 json으로 내용을 가져왔기에 더욱 복잡해졌다. 먼저 front.js코드에 axios요청을 좀 다듬었다 document.getElementById("superForm").addEventListener("submit", async (e) => { e.preventDefault(); const message = e.target.superData.value; if (!message) { return alert('메세지를 입력하세요'); } try { await axios.post('/message', { message }); getMessages(); } c..

javaScript/nodeJs 2022.06.27

nodejs 서버 // http 서버 차근차근 -2 POST요청(axios)

먼저 post요청이 무엇인지 대충 적어보면 클라이언트단에서 서버에 특정 데이터를 보내는 것이다. get요청은 서버에서 클라이언트에게 데이터를 보내는것이니 반대기능이다. 먼저 사용자가 보낼 데이터를 입력할 폼과인풋을 html에 만들어주자. 등록 그럼 브라우저에선 이렇게 보인다. 간단하게 걍 인풋에다가 뭘 적고 등록버튼을 누르면 보낼 수 있다. 여기서 중요한건 폼태그와 인풋에다가 id값을 정해줘야한다. 난 superForm, superData로 정해줬다. 여기선 버튼눌러도 설정해둔게 없어서 아무반응이 없다. #1 프론트 js에서 인풋데이터 받기 이제 front단 js파일을 손봐야한다. document.getElementById("superForm").addEventListener("submit", async..

javaScript/nodeJs 2022.06.27

nodejs 서버 // http 서버 차근차근 -1 JSON파일

사실 서버를 이해하면서 코드를보면서 대충 이해는 했지만 직접 작성을 하면서 익숙해지기는 어렵게 늦겨진다.. axios json등 개념부분은 이해가 되는데 직접 코드를 봐도 사실 이해가 잘 안됬따. 그래서 코드를 하나하나 차근차근 따봐야겠다는 생각이 들어서 이 포스트를 작성했다 그럼 자~ 시작! const http = require('http'); const fs = require('fs').promises; http.createServer(async (req,res)=>{ console.log(req.method) }) .listen(8080,()=>{ console.log('8080포트 연결') }) 먼저 req.method라는게 get, post등등은 있지만 method라는 객체는 뭔지 모르겠었는데 ..

javaScript/nodeJs 2022.06.27

노드js http// 서버열기

const http = require('http'); http모듈을 가져왔다. const server = http.createServer(async (req, res)=>{ try { res.writeHead(200, {'Content-Type':'text/html; charset=utf-8'}) //html언어다라고 알려주는거.. 몇몇브라우저엔 알려줘야함. await fs.readFile('./http.html') .then((data)=>{ res.end(data) }) }catch (error){ console.log(error); res.writeHead(200, {'Content-Type':'text/plain; charset=utf-8'}) res.end(error.message) } }) ...

javaScript/nodeJs 2022.06.24

노드js 내장모듈// fs 파일관리 시스템 -1

fs모듈은 두파트로 나눴다. 어차피 웹개발할때 많이 쓸 모듈이고 동기,비동기개념도 들어있어서.. 1. 사용하기~ 암튼 사용법은 간단한다. const fs = require('fs') 모듈을 가져왔다. fs.readFile('./readme.txt', (err,data)=>{ if (err){ throw err; }else { console.log(data.toString().split('\r\n')) } }) fs모듈에서 readFile메서드를 가져오는데 여기에는 두가지 파라미터가 들어간다. 하나는 파일경로, 현재 노드 실행하는 경로기준 상대경로를 넣어줬다. 그다음은 콜백을 넣어줬는데 에러처리를 위한 err와 data를 넣었다. 만약 err면 던져버리고 아니라면 err는 null이고 정상적으로 data를..

javaScript/nodeJs 2022.06.23

노드js 내장모듈// process(spawn) 노드로 다른언어 실행시키기.

전에 원하는 사이트의 크롤링이 계속 차단이되서 고민하던중 python 셀레니움으로는 차단없이 크롤링이 되더라. 사실 뭐 셀레니움이 직접 사람이 접속해서 클릭하듯 하는 방법이다보니까 많은 회사들이 막기 어려운 모듈이긴 하다. 노드의 셀레니움은 지금은 모르겠지만 워낙 단점이 많단다.. 그래서 서버에서 요청을 받으면 파이썬 파일을 실행시켜 결과값을 받아오는걸 쓸때 spawn을 써봤었다. 사용법은 단순하다. // js 파일 const spawn = require('child_process').spawn; const process = spawn('python', ['./python/test.py']) spawn을 child_process에서 가져오고 process경로와 프로그램을 변수지정해둔다. test.py파일..

javaScript/nodeJs 2022.06.23

노드js 내장모듈// crypto 해시화(단방향 암호화)

const crypto = require('crypto'); 먼저 모듈을 불러오자. const password = '돼지' 먼저 password를 무찌로 해주고 console.log('해시화된 비밀번호:', crypto.createHash('sha512').update(password).digest('base64')) 이렇게 치면 해시화된 무찌가 나온다. 이렇게 짜잔 하고 나와준다. 여기서 sha512는 아직 취약점이 발견안되서 잘 쓰인다. base64는 인코딩 방식이다. 이외에 hex, latin1이 있다. # 소금을 쳐보자. crypto.randomBytes(12, (err, txt) => { const salt = txt.toString("base64"); console.log(salt); cryp..

javaScript/nodeJs 2022.06.21

노드js 내장모듈// url

먼저 두 가지 방식의 방식 const url = require('url'); 먼저 모듈 가져오자~ 1. 노드의 url방식 const parsedUrl = url.parse('https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=39684%EC%B4%88&oquery=39684%EC%B4%88&tqi=hq1m0dp0J1sssf02fd8sssssshl-290689') console.log(parsedUrl) console.log(url.format(parsedUrl)) url parse객체함수에 url주소를 넣어주고 콘솔로 출력해보면 이렇게 받은 url을 분석해서 객체로 만들어준다. 서버만들때 path부분만으로 IO작업 해줘야하니..

javaScript/nodeJs 2022.06.21