Skip to content

Best practices в кейсе: один из нескольких параметров обязателен #20

Open
@denis96z

Description

@denis96z

Кейс:
API может принимать 2 параметра один из которых обязателен (но не оба одновременно):

type Params struct {
    Login string
    UserID uint64
}

Тогда для документации приходится прибегать к следующему трюку:

type RealParams struct {
    LoginParams
    UserIDParams
}

type LoginParams struct {
    Login string `required:"true"`
}

type UserIDParams struct {
    UserID uint64 `required:"true"`
}

Однако это во-первых не очень удобно и порождает лишний код, во-вторых противоречит идее godraft - документация должна быть максимально тесно связана с кодом.

Предложение:
Сделать возможность обозначить группу параметров с одним из них обязательным. Например:

type Params struct {
    Login string `required:"true,identity"
    UserID uint64 `required:"true,identity"
}

где, часть после запятой указывает группу к которой относится обязательный параметр (может отсутствовать - тогда группы нет, параметр обязателен в независимости от остальных параметров), таким образом только один параметр внутри группы будет обязателен

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions