본문 바로가기

Backend/Node.js

(7)
[작성중]세션과 토큰 그리고 JWP 보호되어 있는 글입니다.
[multer] 파일업로드 파일업로드 경로와 파일 이름 설정// utils/fileUpload.js const multer =require('multer') const path =require('path') let storage = multer.diskStorage({ destination: (req, file, callback) => { // 파일 업로드 경로 callback(null, path.join( _dirname, '../../uploads' )); }, filename: (req, file, callback) => { // 파일 이름 설정 callback(null, file.originalname + '' + new Date().getTime()); } }); ..
[가비아] Node.js 웹호스팅 세팅 보호되어 있는 글입니다.
[NVM] Node.js 설치 맥북 포맷해서 다시 설치하는 김에 남겨본다. NVM으로 node.js를 설치하면 언제든지 node.js 버젼을 바꿔가면서 적용할 수 있어서 무척 편리하다. mac은 필수로 사용하는걸 권장한다. 공식 사이트 가서 curl로 시작하는 설치 스크립트 복사해서 입력 https://github.com/nvm-sh/nvm#install-script 맥의 OS버전 높아지면서 기본쉘이 bash에서 zsh로 변경되었으니 쉘에 맞는 명령어를 입력하자. 파일 수정 // bash vi ~/.bash_profile // zsh vi ~/.zshrcvi에서 아래 입력하고 저장하고 종료한다 vi 사용법을 모른다면 i 눌러서 입력모드로 바꾸고 아래 소스 복붙하고 esc 누르고 : 누르고 wq 누르면 된다. export NVM_DIR..
[graphQL] rest API와 차이점, Apollo Server로 맛보기 Rest API Micro service간의 상호호환이 가능하도록 정의한 CRUD 프로토콜 https://reqres.in/ 에서 테스트 데이터용 명세를 확인할 수있음 Graph Query Language 페이스북에서 제작 모든 API가 그래프처럼 하나로 이뤄져있다. Query Language에 해당하는 데이터만 반환해준다. End point는 하나만 정의되어있다.(단일성) Rest API의 단점 Rest API는 API 요청을 위해서 End point(url)을 가지고 API call을 생성해서 호출한다. 이 방식은 오버패칭(과도한 데이터를 로딩)의 문제점을 지닐 수 밖에 없다. 글목록을 조회하려하면 글쓴 회원정보들의 정보도 같이 가지고 오게 된다던지 등 이 방식은 또한 언더패칭(부족한 조회)의 문제도..
Error handling과 custom Error 생성 Error handling 다른 언어에서 제공하는 try/catch 구문이 자바스크립트에서도 존재 자바처럼 특정 클래스/메서드 사용할때 강제하는 것도 아니라서 클라이언트 개발할때 거의 쓸일이 없었다.(그냥 if문으로 처리했었다.) 백엔드서버에서 사용하다보면 에러났을 경우에 어떻게 처리할것인지와 어떤 에러를 내서 로그에 기록할 것인지가 중요 자바에서 Exception 상속 받아서 사용자 정의 예외 만들던것처럼 자바스크립트에서는 클래스나 함수(화살표함수는 X)로 커스텀 에러 만들수가 있다. 커스텀에러와 try/catch 생성자함수를 통해 커스텀 에러 정의 가능(function 혹은 class로 정의) 그러므로 arrow function으로는 불가능(TypeError: CustomError is not a c..
Node.js와 Event Roof Node.js 프로그래밍 패러다임 IO: 사용자데이터를 입력받으면(input) 원하는 결과를 내보낸다(output) Network IO가 웹서버(WAS)의 성능을 측정하는데 가장 중요한 요소 Node.js는 Network IO시 다른 WAS가 겪는 동시성 이슈(Thread)를 비동기와 Non-blocking으로 해결 다른 WAS는 Threadfull 방식이라면 순서가 될때까지 대기해야 해서 Multi Thread 필요. Node.js는 Event Driven 방식이기 때문에 이벤트가 발생했을때 기다리지 않고 반응한다. Event Roof Node.js는 Event Driven 방식, 즉 non-blocking으로 처리를 위해 Event Roof 사용 Event Roof는 Stack(Call Stack)과..