简体   繁体   中英

Swagger node is taking URL phrase as parameter

I'm using swagger-node for REST APIs and I've found an absurd issue here.

Here's my one of GET requests:

GET: /students/{id}/{name}

(id is number)

And now I wrote another request:

GET: /students/routeInfo/{id}

But the 2 nd request me following error:

Expected type is number, found type string . Which clearly means 2 nd request is trying to "mask" 1 st request. Which I think shouldn't be.

Am I doing something wrong or is there any other way to handle this?

In your path definitions, changeChange your 'parameters' type: number for type: string

Your path will look like this:

/students/routeInfo/{id}:
x-swagger-router-controller: yourStudentController
get:
  tags: 
    - Student
  description: description
  operationId: yourOperation
  parameters:
    - name: id
      in: path
      description: description id of routeInfo 
      required: true
      type: string

See more at https://swagger.io/docs/specification/paths-and-operations/

The exact same situation is described in the OpenAPI specification v3.0 document: section Path Templating Matching, 3rd example. It is called ambiguous matching, and "... it's up to the tooling to decide which path to use." The tool, of course, being swagger-node.

It is weird though, isn't it!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM