Heroku는 Java, Node.js, Python등 여러 언어를 지원하는 클라우드 Paas입니다.
※ Paas란?
서비스형 플랫폼(Platform as a Service, PaaS)은 클라우드 컴퓨팅 서비스 분류 중 하나다. 일반적으로 앱을 개발하거나 구현할 때, 관련 인프라를 만들고 유지보수하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공한다. SaaS의 개념을 개발 플랫폼에도 확장한 방식으로, 개발을 위한 플랫폼을 구축할 필요 없이, 필요한 개발 요소를 웹에서 쉽게 빌려쓸 수 있게 하는 모델이다.
터미널
$ npm i cors express
index.js
const express = require('express')
const cors = require('cors')
const app = express()
app.use(express, json())
app.use(cors())
app.use('/', (req, res) => {
res.status(200).json({
name: '0seo!'
})
})
app.listen(1234, ()=>{
console.log('서버 동작?!')
})
node index.js
라는 명령을 통해 해당하는 프로젝트의 진입점에 해당하는 파일을 실행합니다.node index.js
실행 후 '서버동작?!'에 ?가 하나를 더 붙이게 되면 콘솔창에 변경된 내용으로 출력되지 않습니다.$ npm i nodemone
package.json
"scripts": {
"start": "nodemon index.js"
},
http//localhost:1234/api/v1/todos
와 같이 하위 api 주소를 만들기 위해서는 express에서 제공하는 Router를 사용해야합니다.const router = express.Router()
router.get('/', (req, res) => {
//
})
...
api.use('/api', router)
/api
에 /'
가 붙어 /api/
로 접근이 가능하게 됩니다.const express = require('express')
const router = express.Router()
//get
router.get('/', (req,res)=> {
const { apikey } = req.query
const validApikeies = ['1223', '1456'] //DB에서 정보를 빼옴
if(!validApikeies.indcludes(Number(apikey))) { //문자=>숫자
return res.status(401).json('유효한 정보가 아닙니다.')
}
return res.status(200).json({
name: 'First Todo API'
})
})
//post
router.post('/', (req,res)=> {
console.log('req.body::' req.body)
res.status(200).json(true)
}
//put
router.put('/:id', (req,res) =>{
console.log('req.params::', req.params)
res.status(200).json(true)
}
//Delete1: id값 받아서 처리
router.delete('/:id', (req,res) =>{
console.log('req.params::', req.params)
res.status(200).json(true)
}
//Delete2: body에서 받아서
router.delete('/', (req,res) =>{
const { id } = req.body
res.status(200).json(true)
}
//Delete3: body에서 받아서
router.post('/delete', (req,res) =>{
const { id } = req.body
res.status(200).json(true)
}
moudel.exporst = router //꼭반환해줘야합니다.
http://localhost1234/api/todos?apikey=1223
에 접근해 결과를 확인해봅니다.global.appRoot = __dirname
const fs = require('fs')
const express = require('express')
const router = express.Router()
//Create
router.poster('/', (req, res) => {
try {
fs.readFileSync(`${global.appRoot}/todos/index.json`, 'utf8') //조회
} catch(err) {
fs.mkdirSync( `${global.appRoot}/todos`)
fs.writeSync(`${global.appRoot}/todos/index.json`, '[]')
}
res.status(200).json('')
})
//Create
router.poster('/', (req, res) => {
const {title} = req.body //1
try {
const todos = Json.parse(fs.readFileSync(`${global.appRoot}/todos/index.json`, 'utf8')) //2.문자 데이터가 나오므로 JSON.parse를 해줍니다.
todos.push({title}) //3.push로 title을 밀어넣습니다
} catch(err) {
fs.mkdirSync( `${global.appRoot}/todos`)
fs.writeSync(`${global.appRoot}/todos/index.json`, '[]')
}
res.status(200).json('')
})
$ npm i mongoose
index.js
const mongoose = require('mongoose')
mongoose.connect('주소://아이디:비밀번호')
const db = mongoose.connection //db가 나옵니다.
db.once('open', () => {//db가 열리면 콜백을 실행합니다.
console.log('MongoDB connected!')
})