swagger-parser icon indicating copy to clipboard operation
swagger-parser copied to clipboard

Parser does not validate GET request with request body

Open aneeshafedo opened this issue 3 years ago • 3 comments

According to OpenAPI specification v3 GET, DELETE and HEAD are no longer allowed to have request body because it does not have defined semantics as per RFC 7231.

When validating a definition file with below path in which GET request has request body, using https://editor.swagger.io/, it gives a semantic error saying GET operations cannot have a requestBody. which is compatible with OpenAPI specification.

However when using the swagger-parser in my java project it does not return any parser error. I have tried the both 2.0.27 and 2.0.24 versions which are listed in the Maven central repository.

Sample OpenAPI definition

paths:
  /pets/{petId}:
    get:
      summary: Info for a specific pet
      operationId: showPetById
      tags:
        - pets
      parameters:
        - name: petId
          in: path
          required: true
          description: The id of the pet to retrieve
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  type: string
              type: object
        required: false
      responses:
        '200':
          description: Expected response to a valid request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pet"

aneeshafedo avatar Aug 30 '21 07:08 aneeshafedo

Hey @aneeshafedo, Thanks for sending us this: I was checking the OpenAPI Specification 3.0.3 and this is what it says about requestBodies The request body applicable for this operation. The requestBody is only supported in HTTP methods where the HTTP 1.1 specification RFC7231 has explicitly defined semantics for request bodies. In other cases where the HTTP spec is vague, requestBody SHALL be ignored by consumers.

gracekarina avatar Sep 23 '21 21:09 gracekarina

@gracekarina Thanl you for the reply. Then are u suggesting that the syntax error giving at https://editor.swagger.io/ is a bug in the editor? In my opinion errors giving at https://editor.swagger.io/ and the latest swagger parser (2.0.27) should be compatible.

aneeshafedo avatar Sep 24 '21 04:09 aneeshafedo

Hi! @aneeshafedo, we have to also warn in parser that in certain HTTP methods is not recommended to use a requestBody.

gracekarina avatar Oct 06 '21 14:10 gracekarina