NodeJs 9

TDD[7] 코드 리팩토링 및 데이터베이스 연동

리팩토링 역할에 따라 파일로 분리하자 • api/user/index.js • api/user/user.ctrl.js • api/user/user.spec.js 리팩토링을 하면서 리팩토링이 잘됬는지 알수있 복잡한 코드를 정리해보겠다. ./index.js 밑과 같게 api/user/index.js 파일을 만들자 새로 만든 api/user/index.js 파일이다. 근데 이렇게 나누면 문제가 생긴다. app이라는 어플리케이션 변수 express 객체가 정의되어 있지않다. 이 문제를 해결하기 위해서 라우터 객체다. 그래서 위에 코드를 보면 2번줄을 추가했다. ./index의 코드가 이렇게 줄었다. 11번 줄은 /users 모든경로에 대해서는 user 라우터를 사용하겠다는 의미 그래도 코드가 기능에 비해 많이 길..

NodeJs 2021.04.01

TDD[6] 사용자목록 및 사용자 상세정보 API개발

GET /user/:id 유저한명 정보 success • id가 1인 유저 객체를 반환한다 error • id가 숫자가 아닐경우 400으로 응답한다 • id로 유저를 찾을수 없을 경우 404로 응답한다 이번에는 쿼리를 사용하지 않고 id 식별자로 구분해볼거다 const express = require('express') const logger = require('morgan') const app = express() const users = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bek' }, { id: 3, name: 'Chris' } ] app.get('/', (req, res) => { res.send('Hello World!') }) app.get('/use..

NodeJs 2021.03.31

TDD[5] TDD로 API 서버 개발

첫 API 테스트 만들기 성공 유저 객체를 담은 배열로 응답한다 최대 limit 갯수만큼 응답한다. 실패 limit이 숫자형이 아니면 400을 응답한다. offset이 숫자형이 아니면 400을 응답한다. 일단 서버를 실행하는 함수를 bin/www로 빼자 www.js 코드 const app = require('../express.js') app.listen(3000, () => {console.log(`running`)}) 그리고 express.js 에서 앱모듈을 공개하자 module.exports = app -> express.js 에 추가 package.json 파일에서 스크립트 부분도 당연히 바꿔줘야함 예시 코드) index.spec.js 코드 //테스트파일은 파일명에 spec이란 단어를 넣거나 폴더..

NodeJs 2021.03.31

TDD[4] TDD 이해 및 환경 구축

테스트 주도 개발 TDD로 개발하자 mocha, should, superTest TDD 엄밀하게 말해서 100%는 아니다. 테스트코드를 만들고 테스트코드를 통과하는 코드를 만들고 리팩토링하는 싸이클 여기에선 api를 만들고 테스트코드를 만들거나 테스크코드를 만들고 api를 만들거임 Mocha 모카(mocha)는 테스트 코드를 돌려주는 테스트 러너 테스트 꾸러미: 테스트 환경으로 모카에서는 describe()으로 구현한다 테스트 케이스: 실제 테스트를 말하며 모카에서는 it()으로 구현한다 mocha를 사용해보자 npm i mocha --save-dev 로 설치하자 14번줄 스크립트 부분에서 start 부분을 수정했다. node index.js == npm start 똑같은 명령어 devDependenci..

NodeJs 2021.03.31

TDD[2] Express.js 역할 및 구조의 이해

익스프레스JS 기초 어플리케이션 익스프레스 인스턴스를 어플리케이션이라 한다 서버에 필요한 기능인 미들웨어를 어플리케이션에 추가한다 라우팅 설정을 할 수 있다 서버를 요청 대기 상태로 만들수 있다 express를 사용하지 않고 만든 어플리케이션 const http = require('http'); //노드에서 기본적으로 제공해줌 기본모듈을 가져옴 const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { if (req.url === '/') { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello W..

NodeJs 2021.03.31

TDD[1] Node.js 기본 구조 이해

TDD 공부 목적 노드로 API 서버를 만들 수 있다. 테스트 주도 개발을 익힐 수 있다. 노드JS의 기초 1. 브라우저 밖에서 자바스크립트 코드를 실행할 수 있다. 2. 크롬에서 사용하는 V8엔진을 사용한다. 3. 이벤트 기반의 비동기 I/O 프레임워크 // readFileSync() const fs = require('fs') //기본모듈 const file =fs.readFileSync('test.txt', {encoding : 'utf8'}) console.log(file); const callback = (err, data) => { console.log(data); } fs.reafFile('text.txt', {encoding : 'utf8'}, callback); 문서에 보면 readfil..

NodeJs 2021.03.31

NodeJS require | xml2js 모듈 사용법 (기상청 정보 가져오기)

NodeJs에서 ajax나 request함수로 파싱을 할 때가 많다. 공공 api가 xml형식일 경우 사용하기가 번거롭기 때문에 파싱 한 xml형식을 json으로 바꿔주자 npm i xml2js 를 통해 설치한다. 이번엔 그럼 NodeJS request 모듈 사용해서 기상청 정보 가져오겠다. 기상청 정보는 XML이니 변환해서 사용해보겠다. 기상청 정보를 URL을 통해 보면 밑과 같은 그림으로 나타난다. 하나하나 태그 명을 보자 rss 안에 channel이 존재한다. channel을 살펴보면 이런 형식이다. XML을 JSON으로 변환한 후 처음부터 하나씩 출력해보자. rss가 JSON형식으로 변환 되어 있다. 그럼 이제 console.log(parsedData.rss.channel[0].item[0].de..

NodeJs 2020.04.21