首页 > 解决方案 > 一种具有不同“必填”字段的 POST 和 GET 模型

问题描述

我用go-swagger. 我有这样的模型:

// Pet pet
// swagger:model
type Pet struct {
    // id
    ID int64 `json:"id,omitempty"`
    // name
    // Required: true
    Name *string `json:"name"`
}

例如在我的POST字段Name中必须是必需的,但对于GET不是。那么如果我不想在不需要的情况下创建类似的模型,我应该如何添加它?因为现在我唯一的想法是创造type PetGET structtype PetPOST struct我想这是愚蠢的想法。

标签: goswaggeropenapigo-swagger

解决方案


如果您从代码生成规范,那么拥有 PetGET 和 PetPOST 并不是一个愚蠢的想法。通常程序模型与 API 模型不匹配,您必须重复定义才能生成规范。所以你有几个选择:

您可以简单地标记字段required: false,并在 GET 处理程序中处理它。

如果您从代码生成规范,则可以创建与程序模型分开的仅 swagger 模型,对于这种情况,请创建两个具有不同注释的模型。


推荐阅读