일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- keyCode == 13
- 패스트캠퍼스 후기
- React
- 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Node.js웹프로그래밍초격차패키지
- 몽구스 쿼리
- 직장인자기계발
- 자동 높이 조절
- react-redux
- mongoose query
- object
- 리액트리덕스
- 직장인 자기계발
- 해시태그 구현
- 패캠챌린지
- 한번에끝내는Node.js웹프로그래밍초격차패키지
- objectid
- 리액트
- 줄바꿈 방지
- #패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Node.js웹프로그래밍초격차패키지
- Object에 변수 지정
- 패스트캠퍼스후기
- 패스트캠퍼스
- useRef
- keycode ==8
- #패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Node.js웹프로그래밍초격차패키
- 해시태그
- event.keycode
- Redux
- 직장인인강
- 한번에끝내는
- Today
- Total
꾸준한프로그래밍
패스트캠퍼스 챌린지 8일차 - 리팩토링 및 Express / 사진 업로드까지 본문
0. 공부 인증
공부 시작 20: 08
공부 종료 21 :55
패캠 강의를 한 챕터단위로 공부하고 있는데,
항상 2시간 정도가 걸리는 것 같다.
전에는 그냥 사용하니깐 사용해야지 였는데,
이제는 어떤 원리로 작동하는지 알아가는 과정이 너무 좋다.
여튼 금일 정리한 노트는 아래 있다.
1. Pug 사용하기
설치하기 :: npm i pug
app.set('view engine', 'pug')
app.use('/', (req, res) => {
res.render('index')
})
src/views/index.pug --> 해당 경로가 기본 views PATH
// 변수사용하기
res.render('index', {
messgae : "hello"
})
html
head
body
div hello, pug!
div= message
2. 스태틱 파일 서빙
스태틱 파일조차 미들웨어로 처리가능.
url 프리픽스 상 라우팅이랑 겹칠 가능성이 있음.
그래서 app.use 를 할때 라우팅 프리픽스를 작성해주면 좋음
// 정적파일 공급하기 -> 미들웨어 추가하면 쌉가능
// app.use(프리픽스, express.static(폴더 주소))
app.use('/public', express.static('src/pubilic'))
// 이후 정적 파일인 css 파일을 서빙하기
html
head
link(rel="stylesheet" href="/index.css")
body
h1 User
h2.gold gold Class
div.green green Class
3. Express에서 에러 핸들링하기
없는 것좀 요청하지마!!
router.get('/:id' (req, res) => {
~~
if(!user){
const err = new Error("User not Found")
err.status = 404
thorw err
}
})
// express use 메소드에서 몇개의 인자를 받는지 알고 있음.
// 그래서 4개의 인자를 받는경우에는 에러 관련 라우팅임을 알고 있음.
app.use((err, req, res, next) => {
res.status
res.send(err.message)
})
async await 함수에서는 무조건 try catch(err) 형태를 사용하자.
4. jest 를 활용한 API 테스팅 - 사람이 하나하나 할 수 없어!
테스트를 자동화를 도와주는 툴임 for UnitTest
우선 테스팅하는 npm을 설치하자
npm i --save-dev jest supertest
테스트용 파일을 만들어 줘야함.
src/app.spec.js --> spec 은 앱이 어떤 식으로 작동하는지에 대한 규격
[jest 만 사용시]
// src/app.spec.js
test('our first test', (req, res) => {
expect(1 + 2)
.tobe(3)
})
// 실행하기 위해서는
//package.json 에
"scripts" : {
"test" : "jest"
}
라고 입력하고 콘솔 창에서 npm run scripts 입력
[jest + supertest 사용]
// src/app.spec.js
const supertest = require('supertest')
const app = require('./app')
const request = supertest(app)
test('our first test', (req, res) => {
request.get(/user/15)
.accept('application/json )
})
테스트 시에 listen을 하고 있으면 불가능함.
그래서 그냥 app.listen은 제외하고 프로그램을 출력하고
그것을 supertest에서 받아와야함.
5. 이미지 업로드 핸들링하기
폼에서 포스트 방법으로 enctype = "multipart/form-data" 로 전송을 해주어야 함.
프론트엔드 페이지
form(action="~", method = "post", enctype = "multipart/form-data")
input(type="file" name ="profile")
button Upload BTN
백엔드 페이지
구현 1. multer 를 설치하기
const multer = require('multer')
구현 2. 멀터 설정 및 미들웨어로 등록하기
~
const multer = require("multer")
const upload = multer({ dest: "uploads/" })
~~
// upload가 가지고 있는 객체 중에서 single 이라고 하는 메소드 호출.
// 그리고 그 인자로 프론트엔드에서 input 에 달아둔 id 값 입력
router.post('/:id/profile', upload.single("profile")), (req, res, next) => {
// multer 미들웨어를 통하게 되면
// req에 뮤테이션으로 files 가 생김
consol.log(req.files)
const { user } = req
const { filename } = req.file
user.profileImage = filename
res.send("user image changed")
})
환급 챌린지 (8/30)
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Node.js웹프로그래밍초격차패키지
'백엔드' 카테고리의 다른 글
패스트캠퍼스 챌린지 10일차 - 웹소켓을 통한 실시간 인터렉션 구현 (0) | 2021.09.15 |
---|---|
패스트캠퍼스 챌린지 9일차 - Nosql 정의, 설치 및 활용법 (0) | 2021.09.14 |
패스트캠퍼스 챌린지 7일차 - 리팩토링 및 Express (0) | 2021.09.12 |
패스트캠퍼스 챌린지 6일차 - 스트림과 노드 (0) | 2021.09.11 |
패스트캠퍼스 챌린지 5일차 - Node JS 핵심 개념 정리 (0) | 2021.09.10 |