在bee中使用swagger,不能调试

在go中开发,使用bee api测试,运行:
bee run -gendoc=true -downdoc=true
然后打开页面:
http://127.0.0.1:8080/
此时的页面是打不开的,提示 Method Not Allowed

将网址改成
http://127.0.0.1:8080/swagger
之后可以打开,但是显示的接口,应该是内部的例子

img

将输入框中的地址部分去掉后,只留下 swagger.json,就可以显示出接口,但是不可测试
测试提示

img

我在app.conf中,已经是runmode=dev
而且根据网上查询,将router.go的init中加入了如下代码:

    beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
        AllowAllOrigins:  true,
        AllowMethods:     []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
        AllowHeaders:     []string{"Origin", "Authorization", "Access-Control=Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
        ExposeHeaders:    []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
        AllowCredentials: true,
    }))

如果在地址栏直接执行,如https://127.0.0.1:8060/v1/bw_user/1,会返回404,https与http一样

【以下回答由 GPT 生成】

回答:

问题可能出现在跨域资源共享(CORS)配置上。CORS是一种浏览器的安全机制,用于限制跨域请求。在使用Swagger进行接口测试时,也需要考虑CORS的配置。

下面是解决该问题的步骤:

1. 确认CORS配置

首先,确保你的应用程序的CORS配置正确。你已经在app.conf中添加了CORS配置,但有可能配置不正确。请确保配置的Access-Control-Allow-OriginAccess-Control-Allow-Headers头部字段值正确设置。

2. 配置Swagger JSON地址

在Swagger UI的默认配置中,需要配置Swagger JSON地址(也即swagger.json)。根据你的描述,你已经从http://127.0.0.1:8080/swagger访问到Swagger UI页面,这意味着Swagger JSON地址是可用的。

请确认Swagger UI配置文件(通常是一个HTML文件)中是否正确地指定了Swagger JSON地址。你可以在Swagger UI的配置文件中找到以下代码行:

url: "http://127.0.0.1:8080/swagger.json"

请确保这个地址和你访问Swagger UI的地址匹配。

3. 确认Swagger配置

在你的代码中,添加了CORS的过滤器,已经是一个正确的步骤。但是仅添加CORS过滤器可能不足以解决问题。

请确认你的代码中是否正确地集成了Swagger。确保在路由初始化(一般是在router.go中)时调用了Swagger相关的函数。在你的代码中给出的片段中,貌似没有包含Swagger的初始化函数,这也可能导致问题。

你可以参考以下示例代码,在路由初始化时添加Swagger相关的配置:

import (
    "github.com/astaxie/beego"
    "github.com/astaxie/beego/plugins/cors"
    "github.com/swaggo/beego-swagger"
)

func init() {
    beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
        AllowAllOrigins:  true,
        AllowMethods:     []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
        AllowHeaders:     []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
        ExposeHeaders:    []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
        AllowCredentials: true,
    }))

    beego.Get("/swagger/*", beegoSwagger.WrapHandler(swaggerFiles.Handler))
}

请根据你的实际情况,对代码进行相应的修改。

4. 确认端口和路径

最后,确保你的应用程序在正确的端口和路径上运行。你在问题描述中提到的页面地址是http://127.0.0.1:8080/,如果你的应用程序没有在8080端口运行,或者路径不正确,会导致页面无法打开。

可以通过以下步骤来确认:

  • 检查应用程序的命令行输出,确认应用程序在哪个端口运行(在bee run命令的输出中可以找到)。
  • 确认你的URL和运行端口是否匹配。你可以尝试在浏览器中直接输入http://127.0.0.1:8080/,看看页面能否正确打开。

如果以上步骤都没有解决你的问题,那么可能是其他因素导致无法进行调试。你可以尝试查询更多的资料或在相关的开发社区中进行提问,以获得更详细的帮助。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^