Skip to content

Define a required parameter using a sugar API #1940

@bajtos

Description

@bajtos

At the moment, it is not possible to use @param shortcuts like @param.query.string to define a required parameter.

One has to use @param directly (but don't have to specify the type since LB4 can infer the type from TypeScript metadata). For example:

@param({name: 'format', in: 'query', required: true}) format?: string

Ideally, I would like LB4 to provide the following syntax for annotating parameters as required:

@param.query.string('format', {required: true}) format?: string

Acceptance criteria

  • Modify all @param.SOURCE.TYPE() shortcuts (and possibly other similar shortucts) to accept a new optional argument of type Partial<ParameterObject> and use the provided properties to enhance (or amend) the spec generated by the decorator.
  • Modify @param.array() in a similar way, the new optional argument will be the fourth arg.
  • Modify @param.query.object() similarly, the new optional argument will be the third arg.
  • Verify that the API documentation is able to pick up the changes

🎆 Hacktoberfest 2020

Greetings 👋 to all Hacktoberfest 2020 participants!

Here are few tips 👀 to make your start easier, see also #6456:

  • Before you start working on this issue, please leave a comment to let others know.
  • If you are new to GitHub pull requests, then you can learn about the process in Submitting a pull request to LoopBack 4.
  • If this is your first contribution to LoopBack, then please take a look at our Developer guide
  • Feel free to ask for help in #loopback-contributors channel, you can join our Slack workspace here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    HacktoberfestTasks ready for new contributors to work onRESTIssues related to @loopback/rest package and REST transport in generaldeveloper-experienceIssues affecting ease of use and overall experience of LB usersfeaturegood first issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions