老师 路由名字不是随便命名的吗

老师 路由名字不是随便命名的吗

https://img1.sycdn.imooc.com//climg/6321aac409c298b905760380.jpg

为什么我的  /search 路由 不能访问呢    我改成一些随意的名字  有的能联通 比如 /search/a


有的不能联通  比如/sub   为啥呢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕星星 2022-09-14 18:31:45

同学你好,路由是任意命名的,访问时前端输入路由一致即可,上面举得例子没问题。

建议检查修改代码后,后端项目是否重启成功后再测试。

祝学习愉快!

  • 提问者 ddxz #1

    /**

     * @description shop router

     */

    const router = require('koa-router')()

    const {

        getHotList,

        getShopInfo,

        getProductsByShopId

    } = require('../controller/shop')

    const { SuccessModel, ErrorMOdel } = require('../res-model/index')




    router.prefix('/api/shop')




    //附近所有(热门)商店

    router.get('/hot-list', async (ctx, next) => {

        const list = await getHotList()

        ctx.body = new SuccessModel(list)

    })



    //附近(某个)商店详情

    router.get('/:id', async (ctx, next) => {

        const id = ctx.params.id

        const shop = await getShopInfo(id)

        ctx.body = new SuccessModel(shop)

    })



    //查询(某个)商店的商品列表

    router.get('/:id/products', async (ctx, next) => {

        const shopId = ctx.params.id

        const tab = ctx.query.tab || 'all'

        const products = await getProductsByShopId(shopId, tab)

        ctx.body = new SuccessModel(products)

    })



    // 获取热词列表

    router.get('/search/hot-words', async (ctx, next) => {

        const list = ['番茄', '苹果', '葡萄']

        ctx.body = new SuccessModel(list)

    })



    //获取搜索页列表

    router.get('/search', async (ctx, next) => {

        // const shopList=await getHotList()

        const list = ['番茄', '苹果', '葡萄']

        ctx.body = new SuccessModel(list)

    })



    module.exports = router


    只有最后一个路由不能用



    Error

    Looks like something broke!

            CastError: Cast to ObjectId failed for value "search" (type string) at path "_id" for model "shop"
        at model.Query.exec (C:\Users\jh\Desktop\test\xiaomujishi-server\node_modules\mongoose\lib\query.js:4884:21)
        at model.Query.Query.then (C:\Users\jh\Desktop\test\xiaomujishi-server\node_modules\mongoose\lib\query.js:4983:15)



    2022-09-14 18:39:34
  • 好帮手慕星星 回复 提问者 ddxz #2

    可能是路由匹配规则问题,建议将/search路由代码提到最前面试试

    https://img1.sycdn.imooc.com//climg/632288fa0900a25c07050833.jpg

    /:id是匹配任意的,可能将/search匹配上了。所以将代码放在最前面试试。

    2022-09-15 10:08:37
  • 提问者 ddxz 回复 好帮手慕星星 #3

    嗯  提到最前面  就好了

    2022-09-15 18:28:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师