如何在REST API中管理映射模型

时间:2018-04-25 16:22:01

标签: go

我有一个REST API,对于每个响应,我需要将我的核心模型映射到我将在REST服务中公开的模型。

我想将模型命名为相同,例如:

def foo
  puts("foo")
end

def bar
  puts("bar")
end

foo
bar

我希望在我的API中公开用户结构:

package main 

type User struct {
  Name string
  Password string
}

如何组织我的代码以便我不会发生名称冲突,因为当我尝试这样做时,我收到错误:

  

以前的宣言

如果我将API结构的包更改为:

type User struct {
  Name string
}

我收到了另一个错误

  

无法加载包:package ...找到包main和api

如果我能够分离模型,我将如何参考其他包的模型:

package api
type User struct { ... }

所以我想把main.User作为参数并返回api.User。

1 个答案:

答案 0 :(得分:1)

正如其他人所说,你想要做的事情根本不可能在同一个包装下,并且即使在不同的包装下也可能引起混淆。如果你想继续做后者,你应该有一个名为api的文件夹,你可以将user.go放在其中。然后,示例文件夹结构如下所示:

main.go // package main
user.go // package main
/api
  user.go // package api

为了它的价值,当我设计API时,我通常会在包User中包含结构model,在包{UserResponse中包含结构handler {1}}。对于获取数据的端点,它们也具有与它们相关联的UserRequest结构。这清楚地说明了他们的目的是什么,无论他们在哪个包中被引用。