如何使用flask_restplus定义字典字段,以在使用swagger代码生成的go代码中使用?

时间:2019-05-04 06:41:17

标签: go swagger-codegen flask-restplus

我已使用swagger CLI生成go代码来调用我的flask应用程序。 swagger codegen可以将fields.Raw模型定义的flask_restplus类型转换为*interface{}

在go中以* interface {}类型将值分配给字段会返回

  

prog.go:18:26:无法使用notebook_spec_secrets(类型   map [string] string)分配为* interface {}类型:* interface {}   是指向接口而不是接口的指针

您可以在这里进行测试 https://play.golang.org/p/sFE9Qr-72_G

一个快速而肮脏的修复方法是通过cli cli和change更改生成的代码

  

NotebookSpec *接口{}

  

NotebookSpec界面{}

  1. 是否可以在go中将字典转换为* interface {}? (我的Google搜索显示go中的接口指针无效,从逻辑上讲是不正确的)

  2. 如何使用flask-restplus定义字典字段

run_definition = api.model('Run definition',
                           {

                               'notebook_spec_secrets':
                               fields.Raw(required=False,
                                          example={
                                              "eventhub_source_cs": "Endpoint=sb://xxxx.servicebus.windows.net/;SharedAccessKeyName=xxxx;SharedAccessKey=xxxx=;EntityPath=sourceeh",
                                              "eventhub_destination_cs": "Endpoint=sb://xxxx.servicebus.windows.net/;SharedAccessKeyName=xxxx;SharedAccessKey=xxxx=;EntityPath=desteh",
                                              "adl2_destination_oauth2_clientid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                                              "adl2_destination_oauth2_clientsecret": "xxxx=",
                                              "adl2_destination_oauth2_tenantid": "xxxx=",
                                              "adl2_destination_cs": "abfss://<file-system-name>@<storage-account-name>.dfs.core.windows.net/folder1",
                                          })})

1 个答案:

答案 0 :(得分:0)

我不确定为什么它会生成一个指向接口的指针,但是仍然可以通过将映射显式转换为interface{}然后使用地址来分配给它。 :

notebook_spec_secrets := map[string]string{
    "eventhub_source_cs":                   "1",
    "eventhub_destination_cs":              "2",
    "adl2_destination_oauth2_clientid":     "3",
    "adl2_destination_oauth2_clientsecret": "4",
    "adl2_destination_oauth2_tenantid":     "5",
    "adl2_destination_cs":                  "6",
}

var nssi interface{} = notebook_spec_secrets
definition.NotebookSpec = &nssi

https://play.golang.org/p/rHrMH_jF_oS