본문 바로가기

Express12

[node.js] 프로젝트를 마무리하면서 - 정리, 그리고 해커톤 [서비스 URL]- http://www.politics-watch.com/ [기술 스택]1) 웹 서비스 : Express(nodejs), firebase(auth) - AWS EC2 2) 크롤링 : request, cheerio, mecab-ya(nodejs) / crond - AWS EC2 3) DB: mysql server(AWS RDS) [프로젝트 관련 지식](1) 목표, 컨셉, 디자인, 기능, 사용자 기능 사용 단계, 개발 순서 등 모든 계획을 짜놓은 뒤(초기 계획) 개발(2) 버젼 계획이 있어야함 : 초기 버젼 계획을 세우고 추후 생각나거나 기획된 기능은 다음 버젼, 개발 단계에 돌입했다면 최대한 수정없이(3) 무작정 개발보다는 프로젝트 단계를 지켜나갈 것 : 필요한 정보 설계(DB) -> 기능.. 2017. 8. 20.
[node.js] express - 라우터, 컨트롤러 나누기 [수정된 코드]- TDD user API server settings : https://github.com/imjinbro/tddUserAPI(필요하다면 fork 후 remote로 가져오기) [라우트, 컨트롤러 코드 각각 분할하기]- 라우트 : 라우팅을 위한 전용 Router 클래스 사용해서 app.js에서 라우팅 코드 간결하게 만들기- 컨트롤러 : api 동작(콜백함수) 부분만 모듈화시키기 1) 디렉토리 분할하기- 총괄디렉토리(api) > 유저 api 디렉토리(user) 만들기 : mkdir 사용해서 api, user 생성 2) user 디렉토리에 소스 파일 분할하기 - index.js : 라우팅const express = require('express'); const router = express.R.. 2017. 6. 20.
[node.js] express - session : 로그인 [HTTP]- 무상태성! [쿠키 그대로 사용한다면]- 쿠키에 모든 사용자 정보를 담아서 클라이언트에 전달- 보안에 취약 : 중간 탈취, 쿠키 스토리지 탈취 [세션이란]- 클라이언트 요청 시 사용자를 식별할 수 있는 id값이 담긴 쿠키 응답- 헤더에 쿠키 그리고 요청 : 서버에서 쿠키를 받아 사용자 id값을 가지고 서버 측 db에 저장된 사용자 정보를 가지고 응답 할 때 사용=> 동일한 session-id값을 가지고 요청하면 동일 클라이언트 - node 모듈 중 express 서버에서 session을 쉽게 구현할 수 있는 미들웨어를 제공하는 express-session이 있음- 설치하기 : npm i express-session [express-session 사용하기 : 로그인 정보 유지]- 1.5.0 v.. 2017. 6. 19.
[node.js] express - HTTP 쿠키 사용하기 [HTTP 쿠키란]- HTTP 무상태성(stateless) : 이전 통신 정보를 현재 통신에서는 모름- 서버가 클라이언트(브라우저)에 전송하는 데이터 조각- 브라우저는 데이터 조각을 저장하고 동일한 서버로 요청 시 전달함- 사용 예시 : 사용자의 정보(로그인 정보 말고)가 저장된 쿠키를 브라우저에 전달하고, 요청 시 쿠키를 받아 동일한 웹브라우저인지 확인 후 처리=> 로그인 정보는 세션을 사용함, 쿠키에 저장하고 아무리 보안 처리를해도…. 위험 [node cookie module : cookie-parser + express res.cookie]- cookie-parser : 쿠키 헤더를 파싱해서 req.cookies 객체 리턴- res.cookie(name, value) : 응답 헤더에 쿠키를 설정하는.. 2017. 6. 18.
[node.js] 유저 목록 조회, 유저 조회, 삭제 테스트 + API 서버 구현 [API 만들고 테스트하자]- 그 전에 꼭 알아야할 것1) 테스트 수트(describe) : 큰 카테고리 경우를 정의할 때 사용2) 테스트 케이스(it) : 카테고리 내에서 테스트할 거리를 테스트할 때 사용 - 유저목록조회 API 테스트 코드(1) 테스트 조건 - 유저목록조회 성공했을 때 유저객체를 담은 배열로 응답, 최대 limit 갯수 만큼 응답한다- 유저목록조회 실패했을 때 limit(쿼리스트링)의 값이 숫자가 아니라면 400 코드를 응답한다 (2) 테스트 수트와 케이스로 나누기 : 테스트 바탕 조건과 테스트 해보아야 할 것을 구분- 수트 : 전체 테스트, 성공, 실패- 케이스 : 성공 - 유저객체를 담은 배열로 응답 - 최대 limit 갯수만큼 응답, 실패 - 400 코드 응답 (3) 케이스 만들.. 2017. 6. 16.
[node.js] TDD 라이브러리 - mocha, assert, should, supertest [TDD : Test Driven Develop]- 테스트 주도 개발 : 처음부터 모든 기능을 개발하기보다 테스트 코드를 먼저 개발하고 테스트 한 뒤 개발- 테스트 해보고 원하는 결과값이 나오는지 확인하고!- 유지 보수할 때 좋다함 : 느껴봐야지 [nodejs에서 TDD]- mocha, should, superTest 라이브러리를 사용함 1) mocha : 테스트 코드 작성 후 실행 해보는 테스트 러너, 테스트 베이스를 만들기 쉬움, 테스트 결과를 알기쉽게 보여줌- 공식페이지 : https://mochajs.org/- 테스트 수트와 테스트 케이스로 이뤄져있음- 테스트 수트 : 테스트 환경을 말함, describe() 로 구현- 테스트 케이스 : 테스트(테스트 코드 생성)를 말함, it() 로 구현 (1).. 2017. 6. 12.
[node.js] express로 REST API 서버 개발 [REST API 서버]- 자원에 대한 처리 관점으로 요청 - 응답 API 서버 만듬- 자원에 식별번호 부여- 자원에 대한 처리 : CRUD(HTTP 메서드), HTTP 사용 극대화 [HTTP 메서드]1) GET : 자원 조회2) POST: 자원 생성3) PUT: 자원 갱신4) DELETE: 자원 삭제 - express 어플리케이션 메서드로 구현되어있음 [HTTP 상태코드]- 1xx : 처리 중- 2xx : 성공(200, get/put), 작성됨(201, post), 내용 없음(204, delete)- 4xx : 잘못된 요청(400), 권한 없음(401), 잘못된 요청(404), 충돌(409)- 5xx : 서버 에러(500) [요청 URI 디자인 - 라우팅]- 서버 컴퓨터의 파일 디렉토리를 지칭하는 것이.. 2017. 6. 9.
[firebase] Authentication - OAuth 개념과 페이스북 OAuth #1 [firebase Authentication]- 페이스북, 구글 등 계정의 권한을 위임하는 과정, 위임받아 인증 key(Access Token)를 보관하는 서버를 쉽게 구현할 수 있음- 로그인 서버를 따로 두는 개념 [OAuth란]- 인증을 위한 오픈 스탠다드 프로토콜 + 인증과 허가의 뜻을 모두 가짐- 다른 어플리케이션에 아이디, 비밀번호를 노출하지않고, API 접근 권한 위임 요청 시 사용하는 방법- 아래의 필수 개념을 통해 어떻게 권한을 위임받고, 관리하는지 알아보자 [OAuth 필수 개념]1) Service Provider : OAuth를 사용하는 Open API를 제공하는 서비스 - fb, google, naver, kakao 등2) Consumer : OAuth 인증을 사용하여 Service .. 2017. 6. 1.
[node.js] express 로그인 정보 전달하기 [먼저 보면 좋은 게시글] - [웹기본개념] HTTP 그리고 REST API 다가가기 : http://jinbroing.tistory.com/96 (HTTP 메서드 참고)- [node.js] express 라우팅, CRUD / 쿼리스트링 : http://jinbroing.tistory.com/97 (라우팅이란 참고)- [node.js] express 그리고 템플릿엔진 ejs : http://jinbroing.tistory.com/107 [서버에 요청할 때 구분해서 쓰자]- 서버에 정보를 요청(Read)할 때는 GET- 서버에 클라이언트가 정보를 전달할 때에는 POST [서버로 데이터를 전송할땐]- 클라이언트가 서버로 데이터를 전송할 땐 POST- express POST 방식 구현하기 [서버로 데이터 전송.. 2017. 5. 15.
[node.js] express 그리고 템플릿엔진 ejs [반드시 먼저 봐야할 게시글]1) [node.js] express 기본구조 생성 : http://jinbroing.tistory.com/106 [템플릿엔진이란, 템플릿엔진을 사용하면 어디가 좋아]- 정적인 파일만을 서비스한다면 필요없음- 동적인 결과를 정적인 파일에 담기위해 사용함- 풀어 설명하자면, 자바스크립트 코드로 연산된 결과를 변수에 넣고 변수를 뷰 파일에서도 사용할 수 있게끔 함- 템플릿엔진 사용 이유 : 클라이언트 요청에 따라 웹문서 들어가는 내용(결과)이 달라질 수 있어서 정적인 부분과 동적인 부분을 따로 하기위해 사용- app.js 내 html 코드를 쓰지않아도 됨- 뷰 파일과 자바스크립트 코드를 한 파일에 정의하지않고 따로따로 사용할 수 있음 - 자바스크립트로 연산된 결과를 뷰 파일에 쉽.. 2017. 5. 1.