Как определить словарные поля с помощью flask_restplus для использования в коде go, созданном с помощью swagger codegen? - PullRequest
4 голосов
/ 04 мая 2019

Я использовал swagger CLI для генерации кода go для вызова моего приложения фляги. Swagger Codegen преобразует fields.Raw тип, определенный с flask_restplus модель в *interface{} в ход

присвоение значения полю с типом * interface {} в go возвращает обратно

prog.go: 18: 26: невозможно использовать notebook_spec_secrets (введите map [string] string) как тип * interface {} в присваивании: * interface {} указатель на интерфейс, а не интерфейс

Вы можете проверить это здесь https://play.golang.org/p/sFE9Qr-72_G

Быстрое и грязное исправление будет изменять сгенерированный код с помощью swagger cli и change

NotebookSpec * interface {}

до

NotebookSpec interface {}

  1. Возможно ли преобразовать словарь в * interface {} в go? (мой поиск в 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 голосов
/ 07 мая 2019

Я не уверен, почему он генерирует указатель на интерфейс, но все еще может назначить его, явно приведя вашу карту к 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...