12.接口项目:路由设计

77 阅读2分钟

路由设计

一般都会在router文件夹中新建一个index.js,然后根据接口的功能新建文件分类。如下图:

image.png

index.js文件,如下:

const express = require('express');

const router = express.Router();

// 用户账号
router.use(require('./users'))
// 用户信息
router.use(require('./profile'))
// 文章信息
router.use(require('./article'))
// 标签信息
router.use(require('./tag'))

module.exports = router

users.js文件,如下:

const express = require('express');
const router = express.Router();

// 登录用户
router.post('/users/login', async (req, res, next) => {
    try {
        res.send('post /users/login')
    } catch (err) {
        next(err)
    }
})

// 注册用户
router.post('/users', async (req, res, next) => {
    try {
        res.send('post /users')
    } catch (err) {
        next(err)
    }
})

// 获取当前用户
router.get('/user', async (req, res, next) => {
    try {
        res.send('get /user')
    } catch (err) {
        next(err)
    }
})

// 更新当前用户
router.put('/user', async (req, res, next) => {
    try {
        res.send('put /user')
    } catch (err) {
        next(err)
    }
})


module.exports = router

profile.js文件,如下:

const express = require('express');
const router = express.Router();

// 获取用户信息
router.get('/profiles/:username', async (req, res, next) => {
    try {
        res.send('get /profiles/:username')
    } catch (err) {
        next(err)
    }
})

// 关注用户
router.post('/profiles/:username/follow', async (req, res, next) => {
    try {
        res.send('post /profiles/:username/follow')
    } catch (err) {
        next(err)
    }
})

// 取消关注用户
router.delete('/profiles/:username/follow', async (req, res, next) => {
    try {
        res.send('delete /profiles/:username/follow')
    } catch (err) {
        next(err)
    }
})

module.exports = router

article.js文件,如下:

const express = require('express');
const router = express.Router();

// 获取文章
router.get('/articles', async (req, res, next) => {
    try {
        res.send('get /articles')
    } catch (err) {
        next(err)
    }
})

// 推荐文章
router.get('/articles/feed', async (req, res, next) => {
    try {
        res.send('get /articles/feed')
    } catch (err) {
        next(err)
    }
})
// 获取文章,未登录

router.get('/articles/:slug', async (req, res, next) => {
    try {
        res.send('get /articles/:slug')
    } catch (err) {
        next(err)
    }
})

// 创建文章
router.post('/articles', async (req, res, next) => {
    try {
        res.send('get /articles')
    } catch (err) {
        next(err)
    }
})

// 更新文章

router.put('/articles/:slug', async (req, res, next) => {
    try {
        res.send('get /articles/:slug')
    } catch (err) {
        next(err)
    }
})

// 删除文章

router.delete('/articles/:slug', async (req, res, next) => {
    try {
        res.send('get /articles/:slug')
    } catch (err) {
        next(err)
    }
})

// 添加文章评论

router.post('/articles/:slug/comments', async (req, res, next) => {
    try {
        res.send('get /articles/:slug/comments')
    } catch (err) {
        next(err)
    }
})

// 获取文章评论
router.get('/articles/:slug/comments', async (req, res, next) => {
    try {
        res.send('get /articles/:slug/comments')
    } catch (err) {
        next(err)
    }
})

// 删除评论

router.delete('/articles/:slug/comments/:id', async (req, res, next) => {
    try {
        res.send('get /articles/:slug/comments/:id')
    } catch (err) {
        next(err)
    }
})

// 标记喜欢的文章
router.post('/articles/:slug/favorite', async (req, res, next) => {
    try {
        res.send('get /articles/:slug/favorite')
    } catch (err) {
        next(err)
    }
})

// 取消标记喜欢的文章
router.delete('/articles/:slug/favorite', async (req, res, next) => {
    try {
        res.send('get /articles/:slug/favorite')
    } catch (err) {
        next(err)
    }
})
module.exports = router

tag.js文件,如下:

const express = require('express');
const router = express.Router();

// 标签
router.post('/tags', async (req, res, next) => {
    try {
        res.send('post /tags')
    } catch (err) {
        next(err)
    }
})

module.exports = router