본문 바로가기

Node.js9

[node.js] 프로젝트 개발 일지 - 댓글 CRUD + ajax [지금까지]- 설명에 대한 댓글쓰기, 보기(C / R) 기능은 구현되어져있음 - Update / Delete 기능 구현하기 : C, R과 마찬가지로 ajax 서버콜 [조건]- 작성한 유저와 현재 유저가 같을 때 : user_id(유저를 구별할 수 있는 고유값)로 비교한 후 => comment 테이블 레코드마다 user_id를 가지고 있음 => 업데이트, 삭제 쿼리를 날릴 때 WHERE 2개 조건 : AND 조건(유저가 맞고, 삭제하려는 코멘트의 id가 맞아야함) [구현하기]1) 댓글 레이아웃 수정 : 이름 / 내용 / 버튼 2개(수정하기 토글, 삭제 버튼) 2) 수정하기 토글 : 클릭하면 댓글 내용 수정할 수 있도록 DOM 교체 : /comment 컨트롤러 내 함수 만들기 => 토글 클릭 : 댓글 작성한.. 2017. 8. 11.
[node.js] 프로젝트 - 핫키워드 + 댓글 한번에 뽑기 : mysql 테이블 join [댓글 조회기능]- 프로젝트에서 사용하는 테이블(1) 키워드 => mysql 데이터타입에 관한 문서 : https://dev.mysql.com/doc/refman/5.5/en/data-types.html - id MEDIUMINT - 키워드들 VARCHAR - 키워드설명 VARCHAR - 저장된시간 DATE (2) 댓글 : 현재 게시되어져있는 키워드 랭킹에 대한 유저들의 반응 => 1개의 키워드 랭킹이 여러개의 댓글을 가지는 관계(1:N) => 키워드 테이블에 저장된 레코드의 id를 댓글 레코드를 저장할 때 같이 저장함 : 저장된 댓글 레코드는 어떤 키워드 레코드와 연결되어있는지(쿼리문 - join) - id MEDIUMINT - 유저명 VARCHAR - 코멘트내용 VARCHAR - 키워드테이블명_id .. 2017. 8. 8.
[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] AJAX API 서버 만들기 [먼저 읽어봐야할 게시글]- API 서버, JSON에 대한 개념 필요1) [자바스크립트] JSON 객체 : http://jinbroing.tistory.com/1562) [node.js] express로 REST API 서버 개발 : http://jinbroing.tistory.com/1453) [자바스크립트] Ajax 통신: http://jinbroing.tistory.com/99 [AJAX란]- 자바스크립트 XMLHttpRequest 객체를 사용해서 서버와 비동기적으로 통신하는 것을 말함- 비동기 통신의 결과로 XML을 받았으나 데이터가 많아지면 그만큼 태그가 많아져 용량이 무거워져 경량 데이터 포멧 JSON을 사용함 [XMLHttpRequest 객체]- 자바스크립트 코드에서 HTTP 통신을 쉽게하고.. 2017. 6. 17.
[node.js] 유저 목록 조회, 유저 조회, 삭제 테스트 + API 서버 구현 [API 만들고 테스트하자]- 그 전에 꼭 알아야할 것1) 테스트 수트(describe) : 큰 카테고리 경우를 정의할 때 사용2) 테스트 케이스(it) : 카테고리 내에서 테스트할 거리를 테스트할 때 사용 - 유저목록조회 API 테스트 코드(1) 테스트 조건 - 유저목록조회 성공했을 때 유저객체를 담은 배열로 응답, 최대 limit 갯수 만큼 응답한다- 유저목록조회 실패했을 때 limit(쿼리스트링)의 값이 숫자가 아니라면 400 코드를 응답한다 (2) 테스트 수트와 케이스로 나누기 : 테스트 바탕 조건과 테스트 해보아야 할 것을 구분- 수트 : 전체 테스트, 성공, 실패- 케이스 : 성공 - 유저객체를 담은 배열로 응답 - 최대 limit 갯수만큼 응답, 실패 - 400 코드 응답 (3) 케이스 만들.. 2017. 6. 16.
[node.js] 예제로 간단하게 웹서버 구축 [목표]- node.js로 웹서버 간단하게 구축해보기- 브라우저 - 웹서버 HTTP 통신 기본개념 익히기- node.js로 간편하게 웹서버 구축하는 방법 알기(다음 포스팅) [서버구축](1) node.js 공식 웹사이트 about 탭 가기 : https://nodejs.org/ko/about/(2) 예시 코드 긁어오기12345678910const http = require('http');const hostname = '127.0.0.1'; //클라우드 서버컴퓨터(원격 접속 후 웹서버 구축)라면 아래 (5)번 항목 참고const port = 3000;const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Co.. 2017. 4. 11.
[node.js] 환경구축, 테스트해보기 [목표]- node.js 환경구축 후 확인해보기- 웹브라우저 없이도 자바스크립트 코드를 돌릴 수 있음을 확인하기- 서버사이드에서는 자바스크립트(node.js)를 어떻게 활용하는지 api 문서를 통해 확인하기 [node.js 설치하기](1) 공식홈페이지 이동 : https://nodejs.org/ko/(2) 다운로드(Downloads) 탭 이동 > 각 OS에 맞게 설치(3) 리눅스 내 설치(aws 프리티어) - 패키지매니저로 node.js 설치하기 클릭 - 버젼별 설치 명령어 : v7.x를 사용하는 것이 좋다함 [node.js 전용 디렉토리 만들기](1) mkdir 전용디렉토리명 : node.js 서버 관련 파일(.js)을 저장할 디렉토리를 만듬- root 계정으로 설정 후 디렉토리 만들기- 혹은 sudo.. 2017. 4. 10.