go-swagger重新启动pi/configure_todo_list.go-api.TodoGetHandler未定义错误

go-swagger重新启动pi/configure_todo_list.go-api.TodoGetHandler未定义错误,go,swagger,swagger-2.0,go-swagger,Go,Swagger,Swagger 2.0,Go Swagger,我是go和go-swagger的新手。我正在遵循goswager.io教程中的步骤 我使用的是ubuntu18.04,swagger v0.25.0和go 1.15.6 按照相同的步骤,生成的文件有一些不同。例如,Goswager.io在模型中有find\u todos\u okbody.go和get\u okbody.go,但我的没有。为什么会这样 vs 按照教程go install./cmd/todo list server/中的说明启动服务器会出现以下错误。有人能帮忙吗 #我的文件夹/大

我是
go
go-swagger
的新手。我正在遵循goswager.io教程中的步骤

我使用的是
ubuntu18.04
swagger v0.25.0
go 1.15.6

  • 按照相同的步骤,生成的文件有一些不同。例如,Goswager.io在
    模型中有
    find\u todos\u okbody.go
    get\u okbody.go
    ,但我的没有。为什么会这样
  • vs

  • 按照教程
    go install./cmd/todo list server/
    中的说明启动服务器会出现以下错误。有人能帮忙吗
  • #我的文件夹/大摇大摆的待办事项列表/restapi
    restapi/configure_todo_list.go:41:8:api.TodosGetHandler未定义(type*operations.TodoListAPI没有TodosGetHandler字段或方法)
    restapi/configure_todo_list.go:42:6:api.TodosGetHandler未定义(type*operations.TodoListAPI没有TodosGetHandler字段或方法)
    
  • 第一步是
    swagger init spec…
    。我应该在哪个目录中运行此命令?我在主目录中新创建的文件夹中运行它。但是,在页面中,它显示了路径为
    ~/go/src/github.com/go-swagger/go-swagger/examples/tutorials/todo list
    。我不确定是否应该使用
    go-get…
    git-clone…
    或创建这些文件夹。有人能给我建议吗
  • 谢谢

  • 这可能是文档落后于您正在运行的代码版本。只要编译,工具生成的特定文件就不是那么重要

  • 这是一个编译错误。当您执行
    go install foo
    时,它将尝试将foo包构建为可执行文件,然后将其移动到您的
    GOPATH/bin
    目录。似乎
    restapi/configure\u todo\u list.go中生成的代码对于生成的
    操作不正确

  • 您只需要运行一个空目录和swagger工具(不是它的源代码)就可以自己运行本教程。您可以从这个空项目的根目录运行这些命令。为了避免遇到GOPATH问题,我会在做任何其他事情之前,先用
    go mod init todo list example
    初始化一个模块。 请注意,虽然todo list示例代码存在于go-swagger源代码中,但它只是用于记录示例的使用和输出

  • 对于#2,我的建议是确保您使用的是正确发布的go-swagger版本,而不是从最新提交的版本安装(当您只执行
    go-get
    时会发生这种情况),因为我发现这有时会不稳定

    接下来,重新生成整个服务器,但确保也重新生成
    restapi/configure\u todo\u列表。通过将
    --regenerate configureapi
    传递给您的
    swagger generate
    调用,转到
    。此文件并不总是刷新,因为您要修改它以配置您的应用程序,如果您更改了该工具的版本,它可能会不同且不兼容


    如果在此之后仍然出现编译错误,则值得在提交错误报告。

    谢谢@EzequielMuns。如中所述,在我运行了
    go-get-u-f./…
    之后,#2中的错误消失了

    。。。
    要编译这一代,您的GOPATH中需要有一些包:
    *github.com/go-openapi/runtime
    *github.com/jessevdk/go-flags
    你现在可以用:go get-u-f./。。。
    
    对于#3,澄清一下,任何空目录(不一定在
    $GOPATH
    内)都可以正常工作?如果您在GOPATH之外,最好在执行任何其他操作之前使用
    go mod init
    初始化模块。如果里面的gopath是正确的,那就工作吧。谢谢!行得通