如何使用 flask_restplus 定义字典字段以用于使用 swagger codegen 生成的 go 代码?
How to define dictionary fields with flask_restplus to be used in go code generated with swagger codegen?
我已经使用 swagger CLI 生成 go 代码来调用我的 flask 应用程序。 swagger codegen 将使用 flask_restplus
模型定义的 fields.Raw
类型转换为 go
中的 *interface{}
使用 *interface{} 类型将值分配给字段 go returns back
prog.go:18:26: cannot use notebook_spec_secrets (type
map[string]string) as type *interface {} in assignment: *interface {}
is pointer to interface, not interface
你可以在这里测试
https://play.golang.org/p/sFE9Qr-72_G
一个快速而肮脏的修复方法是通过 swagger cli 和 change 更改生成的代码
NotebookSpec *interface{}
到
NotebookSpec interface{}
是否可以在 go 中将字典转换为 *interface{}? (我的 google 搜索显示指向接口的指针在 go 中无效且逻辑上不正确)
如何使用 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",
})})
我不确定它为什么会生成一个指向接口的指针,但仍然可以通过将您的映射显式转换为 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
我已经使用 swagger CLI 生成 go 代码来调用我的 flask 应用程序。 swagger codegen 将使用 flask_restplus
模型定义的 fields.Raw
类型转换为 go
*interface{}
使用 *interface{} 类型将值分配给字段 go returns back
prog.go:18:26: cannot use notebook_spec_secrets (type map[string]string) as type *interface {} in assignment: *interface {} is pointer to interface, not interface
你可以在这里测试 https://play.golang.org/p/sFE9Qr-72_G
一个快速而肮脏的修复方法是通过 swagger cli 和 change 更改生成的代码
NotebookSpec *interface{}
到
NotebookSpec interface{}
是否可以在 go 中将字典转换为 *interface{}? (我的 google 搜索显示指向接口的指针在 go 中无效且逻辑上不正确)
如何使用 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",
})})
我不确定它为什么会生成一个指向接口的指针,但仍然可以通过将您的映射显式转换为 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