728x90
1. controllers 디렉토리 생성
models, routes, modules 등의 디렉토리 들과 동일 선상에 controllers 라는 디렉토리를 생성해 주고,
그 디렉토리 안에 links 라는 디렉토리를 하나 더 만들었다.
그리고 links 안에 index.js 파일을 만들어 준다.
2. app.js
서버 통신을 위한 express와 routes 디렉토리 내에 있는 라우팅 파일들을 불러와서
const express = require('express')
const indexRouter = require('./routes/index')
const linksRouter = require('./routes/links')
app.use('/', indexRouter)
app.use('/links', linksRouter)
3. routes/link.js
const express = require('express')
const router = express.Router()
const linkController = require('../controllers/links')
/* GET links listing. */
router.get('/', linkController.get)
router.post('/', linkController.post)
router.get('/:id', linkController.redirect)
module.exports = router
4. controllers/links index.js
const utils = require('../../modules/utils')
const { url } = require('../../models')
module.exports = {
get: async (req, res) => {
let allUrlLink = await url.findAll()
res.status(200).json(allUrlLink)
},
post: (req, res) => {
utils.getUrlTitle(req.body.url, (err, title) => {
url
.create({
url: req.body.url,
title: title,
})
.then(data => res.status(201).json(data))
})
},
redirect: (req, res) => {
url.findOne({ where: { id: req.params.id } }).then(data => {
url.update({ visits: data.visits + 1 }, { where: { id: req.params.id } })
res.redirect(data.url)
res.status(302).send()
})
},
}
get
url에 있는 모든 데이터를 json의 형태로 가져옵니다.
728x90
'스프린트 > im-sprint-shortly-mvc' 카테고리의 다른 글
im-sprint-shortly-mvc part1 (0) | 2021.11.18 |
---|