본문 바로가기

Express21

[O'REILLY] Node & Express - 12장 : 실무 환경 - 2 1. 예외처리 - 노드는 비동기적이므로, 항상 예외처리에 신경을 써줘야 한다. - express는 라우트 핸들러를 실행할 때 try/catch 블록으로 감싸므로 실제로는 잡히지 않는 예외란 없다. - 모든 라우트에 오류 핸들러를 추가해서 '보기 좋은' 오류 페이지를 만들어줄 뿐이다. - 항상 에러페이지를 만들어두어야 대응을 잘 할 수 있다. - 더 심각한 상황을 가정해보자. - 이렇게 하면 서버 전체가 다운된다. 사용자에게 에러메시지를 보내고 자시고 없고 서버가 다운되면서 어떠한 처리도 불가능하게 된다. - 이 문제는 setTimeout이 비동기적으로 실행되기 때문이다. 함수 실행은 노드가 유휴상태가 될 때 까지 지연된다. - 노드에서 앱의 안정성을 파악하지 못한다면, 예상하지 못한 예외처리가 불가능하여.. 2023. 4. 8.
[O'REILLY] Node & Express - 10장 : 미들웨어 ExpressJS는 앱 그 자체이고, 앱이면서 서버이다. 그리고 모든 것이 미들웨어이다. Express의 핵심이고 앱의 핵심이고 가장 중요한 것이 미들웨어다. 전체 코드 미들웨어의 동작 방식을 이해해야 구조와 설계가 보인다. 1. 미들웨어란 ? - 기능, 구체적으로 애플리케이션으로 들어오는 HTTP 요청 위에서 동작하는 기능을 캡슐화하는 방법이다. - 현실적으로는 요청객체, 응답객체, next() 함수의 세가지 매개변수를 받는 고차함수이다. (에러받는거는 나중에 설명) - 미들웨어는 파이프라인 안에서 실행된다. 순서가 중요하다. - app.use()를 사용해 파이프라인에 미들웨어를 삽입한다. - 파이프라인의 마지막 미들웨어는 이전 라우트와 일치하지 않는 요청을 모두 받는 폴백 핸들러로 만드는 것이 일반.. 2023. 4. 3.
[O'REILLY] Node & Express - 9장 : 쿠키와 세션 1. 들어가면서 - HTTP는 상태가 없는 프로토콜이다. 상태가 없다는 것은 브라우저에서 어떤 페이지를 불러온 다음, 같은 웹사이트의 다른 페이질 이동할 때 같은 브라우저가 같은 사이트에 방문한다는 사실을 알아낼 방법이 없다는 것이다. - 모든 HTTP 요청에는 서버에서 요청을 수행할 때 필요한 정보가 모두 들어있다는 뜻이다. - 이를 해결하기 위해 '상태'를 보존할 방법이 필요했고, 쿠키와 세션이 등장했다. 2. 쿠키에 대해서 - 사용자가 쿠키 내용을 볼 수 있다. - 사용자가 쿠키를 삭제하거나 금지할 수 있다. : 사용자는 쿠키 전체에 대한 권한이 있다. 사용자가 쿠키를 금지할 경우, 웹앱에서 많은 기능이 제약될 수 있다. - 일반적인 쿠키는 변조될 수 있다. : 서명된 쿠키를 사용해야 한다. - 쿠.. 2023. 4. 3.
[O'REILLY] Node & Express - 8장 : 폼 처리 - 3 (파일 업로드) 1. 파일 업로드 - 멀티파트 폼 처리에 주로 쓰이는 패키지는 버스보이, 멀티파티, 포미더블, 멀터 등이 있다. (채신기술 모름) - 멀티파티와 멀터가 좋다고 하는데 뭐 사용자 나름이다. - 파일 업로드를 활성화하기 위해서는 반드시 enctype="multipart/form-data" 를 사용해야 한다. 예시 - accept 옵션을 통해 파일의 타입을 제한할 수 있다. (실제로 강제하는 것은 아니다) - 이제 서버에서 post요청을 처리해보자. - 멀티파티의 parse 메서드를 사용하여 요청 데이터를 데이터 필드와 파일로 분석한다. - 이 메서드는 파일을 서버의 임시 디렉터리에 저장하며, 그 정보를 files 배열로 반환한다. - 라우트 핸들러에 넘길 정보를 알게 되었으니, 라우트 핸들러를 작성한다. -.. 2023. 3. 31.
[O'REILLY] Node & Express - 8장 : 폼 처리 - 2 1. express를 이용한 폼 처리 - 폼처리에 GET을 사용하면 필드는 req.query에 들어간다. - 예를 들어 name 속성이 email인 필드를 사용하면 그 값은 핸들러에 req.query.email로 전달된다. - POST를 사용한다면, URL로 인코드된 바디를 분석하는 미들웨어가 필요하다. - npm i body-parser 을 터미널에 적어 body-parser 라이브러리를 설치한다. - express 4.16 부터 body-parser 를 내장하였다. 이젠 설치할 필요 없다. 그래서 별거 없다. 프론트에서 req.body에 json데이터를 담아서 보내면 그냥 그걸 가져다 사용하면 된다. 다음은 AppSam 프로젝트의 한 예시이다. 2. post요청 form 처리의 예시 - req.bo.. 2023. 3. 30.
[O'REILLY] Node & Express - 6장 : 응답 객체 - 2 1. API 제공 - API를 제공할 때는 폼 처리와 비슷하게 매개변수는 보통 req.query에 들어있지만, req.body 역시 사용 가능하다. - API에서 다른 점은, PUT, POST, DELETE 등의 HTTP 메서드를 자주 사용한다는 점이다. - '엔드포인트' 라는 용어는 주로 API에서 함수를 가리킬 경우 주로 사용한다. 2. 간단한 예제 - GET요청 - PUT 요청 - DELETE 요청 (원래 이런 식으로 한다) 2023. 3. 26.
[앱삼] 11. (backend) 제품 데이터와 스펙 추가 및 보내주기 1. 제품 데이터 몽구스 스키마 정의하기 models/Product.js 2. 제품 리스트 데이터 따로 보관하기 models/ProductList.js 3. add 로직 controllers/product.js 4. 쿼리스트링을 이용한 다양한 상황의 데이터 요청 엔드포인트 설정하기 /controllers/product.js 5. postMan을 이용한 API 요청 Test 테스트 데이터가 잘 온다요! 엥 근데 생각해보니 jwt기반 admin 보안절차를 안거쳤다? 추가하지뭐.. 2023. 3. 26.
[O'REILLY] Node & Express - 5장 : 품질보증 1. 품질보증 1) 예산이 풍부하거나 규모가 큰 경우 - 보통 QA부서가 따로 있고, QA부서와 개발 부서 사이에는 적대적인 공기가 흐른다. - QA는 버그를 많이 찾아야하고, 개발부서는 버그가 적어야 한다. 2) 예산이 빠듯하고 규모가 작은 경우 - 개발 인력이 QA와 소프트웨어 개발을 모두 담당한다. - 개고생한다. 3) 결론 - 개발자도 QA 기술을 갖추는 것도 매우 좋은 경쟁력이다. - 전통적으로 QA 부서에서 담당했던 역량이 개발 쪽으로 넘어오는 추세가 되면서, 개발자들도 QA에 책임 지는 일이 많아졌다. - 이런 상황에서는 QA에 특화된 소프트웨어 엔지니어가 개발자들의 조언가 같은 역할을 하면서 개발 업무에 QA를 넣으 수 있게 돕는다. 2. QA 계획 - QA는 창의적인 과정과 다르게 질서의.. 2023. 3. 13.