Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- expess
- typescript #import #export #*
- sendFile
- GitHub Actions
- typescript #class #extends #public #private #protected #static
- ejs 문법
- connect-mongo
- github#githubpages#빈화면#basename
- serializeUser
- git vscode
- TypeScript #문법
- 정적 페이지
- github#로컬저장소#원격저장소
- Promise #async #await #try #catch
- Passport
- react#로스트아크#mbti#테스트
- updatemany
- typescript #react #jsx #component #usestate
- insertone
- deserializeUser
- e.target
- typescript #unknown
- typescript #class #constructor #public #private #static #extends #protected #typeof #in #instanceof #never
- github#githubpages#gh-pages#deploy
- git#github#init#add#commit#restore#log#staging area#repository#git사용법
- CSS
- updateone
- typescript #constructor #class #public #private
- mongodb 입출력
- __dirname
Archives
- Today
- Total
VaIice의 이야기
[Node.js] API별 파일 분리 본문
1. 예시 코드 - require 사용 (import도 가능)
// shop.js
const router = require('express').Router()
router.get('/shop/shirts', (request, response) => {
response.send('셔츠')
})
router.get('/shop/pants', (request, response) => {
response.send('바지')
})
module.exports = router
const router = require('express').Router()
app -> router 변경
//server.js
app.use('/', require('./routes/shop.js'))
2. URL 축약
// shop.js
router.get('/shop/shirts', (request, response) => {
response.send('셔츠')
})
router.get('/shop/pants', (request, response) => {
response.send('바지')
})
공통된 URL
//server.js
app.use('/shop', require('./routes/shop.js'))
/
/ shop.js
router.get('/shirts', (request, response) => {
response.send('셔츠')
})
router.get('/pants', (request, response) => {
response.send('바지')
})
app.use에서 URL 통합
3. 관련 API 작명법
조회: /post GET
발행: /post POST
수정: /post PUT
삭제: /post DELETE
=> 다른 폴더로 옮기기 용이
삭제: /post DELETE
4. 다른 폴더에서 변수 사용
// database.js
const {MongoClient} = require("mongodb")
const url = process.env.DB_URL
// MongoDB 접속
let connectDB = new MongoClient(url).connect()
module.exports = connectDB
// server.js
let connectDB = require('./database.js')
let db;
connectDB.then((client)=>{
// forum DB에 연결
db = client.db('forum')
// 포트 번호 8080, 서버 띄우기
app.listen(process.env.PORT, () => {
console.log('http://localhost:8080에서 서버 실행 중')
})
}).catch((err)=>{
console.log(err)
})
Q. db를 database.js로 옮기면?
MongoDB에 연결하는 작업은 시간이 걸리기 때문에 비동기 처리
connectDB는 Promise 객체이기 때문에, 비동기 작업 전엔 사용 불가 / 작업이 완료된 후에 then 실행
db는 단순 변수이기 때문에, connectDB가 할당되기 전에, exports가 가능하고 에러를 유발할 수 있음
connectDB가 database.js에서 할당이 되면, server.js에 있던 then이 실행
db는 connectDB가 완료된 후에 사용할 수 있어야하므로, db를 직접 exports하는 대신,
connectDB를 exports하고 필요한 곳에서 then으로 할당
Q. board.js 파일을 만들어보자
// board.js
const router = require('express').Router()
let loginCheck = require('../server')
router.get('/board/sub/sports', loginCheck, (request, response) => {
response.send('셔츠')
})
router.get('/board/sub/game', (request, response) => {
response.send('바지')
})
module.exports = router
// server.js
module.exports = loginCheck
app.use('/', require('./routes/board.js'))
module.exports는 require 위에 적어야한다.
-> middelware는 별도의 파일에 저장하는 것이 안전
'[Node.js]' 카테고리의 다른 글
[Node.js] AWS Elastic Beanstalk를 이용한 서버 배포 (0) | 2024.07.24 |
---|---|
[Node.js] Github Actions를 이용한 CI 구축 (0) | 2024.07.22 |
[Node.js] 이미지 보관 - AWS S3 (2) (2) | 2024.07.19 |
[Node.js] 이미지 보관 - AWS S3 (1) (2) | 2024.07.19 |
[Node.js] 환경변수 관리 (3) | 2024.07.19 |