首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >go/配置_todo_list.go- api.TodoGetHandler未定义错误

go/配置_todo_list.go- api.TodoGetHandler未定义错误
EN

Stack Overflow用户
提问于 2021-01-06 09:27:57
回答 3查看 654关注 0票数 0

我是gogo-swagger的新手。下面是简单服务器教程中goswagger.io中的步骤。

我正在使用Ubuntu 18.04swagger v0.25.0go 1.15.6

  1. 按照相同的步骤,生成的文件有一些不同之处。例如,goswagger.io的find_todos_okbody.goget_okbody.gomodels中有,但我的没有。为什么是这样?

链接到生成的文件的屏幕截图链接到swagger.io生成的文件的屏幕截图

  1. 如教程go install ./cmd/todo-list-server/中所写的,启动服务器会给出以下错误。有人能帮忙吗?
代码语言:javascript
复制
# my_folder/swagger-todo-list/restapi
restapi/configure_todo_list.go:41:8: api.TodosGetHandler undefined (type *operations.TodoListAPI has no field or method TodosGetHandler)
restapi/configure_todo_list.go:42:6: api.TodosGetHandler undefined (type *operations.TodoListAPI has no field or method TodosGetHandler)
  1. goswagger.io待办事项表的第一步是swagger init spec ...。我应该在哪个目录中运行这个命令?我在主目录中新创建的文件夹中运行它。但是,从页面中,它显示了要成为~/go/src/github.com/go-swagger/go-swagger/examples/tutorials/todo-list的路径。我不确定是使用go get ...git clone ...还是创建这些文件夹。有人能给我建议吗?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2021-01-06 15:32:13

  1. 这可能是文档落后于您正在运行的代码的版本。只要编译,这个工具生成的特定文件就不是那么重要了。
  2. 这是编译错误。当您执行go install foo时,它将尝试将foo包构建为可执行文件,然后将其移到您的GOPATH/bin目录中。restapi/configure_todo_list.go中生成的代码似乎不适合生成的operations代码。
  3. 您自己运行本教程所需要的只是一个空目录和swagger工具(不是它的源代码)。您可以从这个空项目的根运行这些命令。为了不遇到GOPATH的问题,我会先用go mod init todo-list-example初始化一个模块,然后再做其他事情。注意,虽然todo列表示例代码存在于go-swagger源代码中,但它只用于记录示例使用和输出。

我对#2的建议是确保您使用的是一个正确发布的go-swagger版本,而不是从最新的提交(当您只执行go get时)安装,因为我发现这是偶尔不稳定的。

接下来,重新生成整个服务器,但也要确保通过将restapi/configure_todo_list.go传递给swagger generate调用来重新生成swagger generate。这个文件并不总是刷新的,因为你打算修改它来配置你的应用程序,如果你改变了工具的版本,它可能是不同的和不兼容的。

如果在此之后仍然会出现编译错误,那么在https://github.com/go-swagger/go-swagger/issues上提交错误报告可能是值得的。

票数 2
EN

Stack Overflow用户

发布于 2021-01-07 03:13:31

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

代码语言:javascript
复制
...
For this generation to compile you need to have some packages in your GOPATH:

        * github.com/go-openapi/runtime
        * github.com/jessevdk/go-flags

You can get these now with: go get -u -f ./...
票数 0
EN

Stack Overflow用户

发布于 2022-07-14 09:46:56

我认为这是一个错误的招摇过市代码生成。您可以通过跟踪来修复这个问题:

  • 删除文件configure_todo_list.go
  • 再生代码。
代码语言:javascript
复制
# swagger generate server -A todo-list -f ./swagger.yml

然后,您可以运行命令go install ./cmd/todo-list-server/,它将成功。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65593222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档