使用代码生成后前端访问接口404

Blade 已结 2 728
li120697
li120697 2024-04-17 20:49

一、该问题的重现步骤是什么?

1. 根据文档代码生成已走通

image.png

image.png

image.png


2. 访问生成的页面访问404

image.png


3.




二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  •  admin
    admin (楼主)
    2024-04-18 11:51

    提供如下信息:

     1. blade-gateway的端口号

     2. test-service里Main的代码

     3. 你想要调用的controller代码

     4. Saber工程vite.config.js的代码


    建议:

     1. 先在现有工程里生成代码跑起来,流程跑通了,了解运行逻辑了再自建新工程。

     2. 描述问题要尽可能详细,你这样描述提供的信息基本是起不到什么帮助作用的,提问技巧参考:https://sns.bladex.cn/article-14934.html



    作者追问:2024-04-18 11:51

    73aebe383c629d51002890564759dc2.png

    1a6432684d283ce95bdaf560076de3d.png

    0e2b9179062f38dd6229ff521fc563d.png

    633db0c1a0d63772ea2a770091f3be3.png

    回答: 2024-04-18 11:51

     1. cloud连接到nacos的时候,会把服务名称注册上去。

     2. 你的Main函数定义的服务名为blade-test,那么后续nacos注册的就是blade-test。

     3. 通过网关调用这个服务的任何接口,都默认以服务名为前缀,你的网关是80端口,那么调用就变成了 http://localhost/blade-test/xx/xx

     4. 但是看到你的controller也加上了 blade-test的前缀,那么真实的地址就变成了 http://localhost/blade-test/blade-test/xx/xx

     5. 所以要解决这个问题很简单,你直接把controller的 blade-test删掉就行了,删掉之后路径会重新变成  http://localhost/blade-test/xx/xx

    作者追问:2024-04-18 11:51

    作者你好,相同的问题。

    之前帮我解决掉是应为我的类名就叫test,所以生成的代码控制器类前缀叫blade-test,恰好我的服务名也叫blade-test,所以我把之前的前缀删掉可以正常访问。

    但是现在假设我创建了一个TestTest的类,那么控制器生成的前缀是blade-testTest,详情看图

    image.png

    image.png

    这种情况下访问404怎么解决


    作者追问:2024-04-18 11:51

    无论是否删掉前缀 访问都是404

    回答: 2024-04-18 11:51

    你这么写,真实路径就变成了: http://localhost/blade-test/blade-testTest/xx


    再好好看下我上面回复你的几个注意点。

    第一个blade-test是服务名注册到nacos的,你controller再怎么改,都是需要加这个前缀的

    作者追问:2024-04-18 11:51

    现在前端调用的地址是http://localhost:2888/api/blade-testTest/testTest/list?current=1&size=10

    反向代理后的地址是否是http://localhost/blade-test/blade-testTest/testTest/list?current=1&size=10 (后端网关端口80,项目名blade-test)

    如果是 那现在是通的 但是报404

    image.png

    作者追问:2024-04-18 11:51

    实际请求并没有像你所说拼接上项目名 baade-test

    image.png

    作者追问:2024-04-18 11:51

    image.png

    image.png

    前后端代码中的url是一样的 作为开发者来说代码是没有问题的 至于网关或服务中心的逻辑是blade框架自带的 这个问题是开发者的代码问题还是框架的问题呢?

提交回复