스프린트/im-sprint-shortly-mvc

im-sprint-shortly-mvc part2

테오구 2021. 12. 23. 13:33
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