Skip to content

Валидировать типы передаваемых в функции значений #1

@denis96z

Description

@denis96z

Предлагаю добавить валидацию передаваемых в функции, принимающие interface{}, значений для упрощения поиска ошибок при описании API.

Пример кода, в котором было бы очень полезно:

type SendDraft struct {
	draft.Endpoint
}

type SendParams struct {
	Phone string `comment:"Номер телефона"`
}

type SendResponse struct {
	Token string `json:"token" comment:"Токен"`
}

func (a *SendDraft) InitEndpointScheme(s *draft.Scheme) {
	s.Project("auth")

	s.Name("Отправка SMS-сообщения с кодом для верификации номера телефона")
	s.URL("/api/v1/sms/send")

	s.Method(draft.Method.POST)
	s.Access(draft.Access.All)

	s.Params(SendParams{
		Phone: "70000000000",
	})

	s.Case(draft.Status.OK, "SMS-сообщение успешно отправлено", func() {
		s.Body(func() SendResponse {
			token, _ := utils.GenerateSmsToken()
			return SendResponse{
				Token: token,
			}
		})
	})
}

В данном случае потерян вызов замыкания в s.Body, что приводит к ошибке

{"error":"json: unsupported type: func() sms.SendResponse"}

которую, однако, невозможно обнаружить до вызова /draft:scheme/

Версия библиотеки: v1.0.0-alpha.8

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions