I had a swagger documentation on version 2.0 where i put the path consumes as application/x-www-urlencoded but when i try to request i receive the following error.
{"message": "Request validation failed: Parameter (username) is required","code": "REQUIRED", "failedValidation": true, "path": [ "paths", "/auth/login", "post", "parameters", "0" ], "paramName": "username" }
But i already passed the parameter as we can see on this curl
<code>curl -X POST \ http://localhost:10010/v1/auth/login \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'username=LOGIN&password=MYPASS&userType=employee'
I've used the following Swagger.yaml
Swagger/OpenAPI definition:
swagger: "2.0" info: version: "1.0" title: Authentication description: Here you can find all specs of ours APIs. externalDocs: description: "Find out more about our developer's portal" basePath: /v1 schemes: - http consumes: - application/json produces: - application/json x-a127-config: {} x-a127-services: {} #security: # - apiKeyHeader: [] definitions: AuthResponse: type: object properties: userType: $ref: "#/definitions/UserType" username: #uid type: string description: LDAP of the employee employeeID: #employeeNumber type: string description: ID of the employee employeeType: #employeeType $ref: "#/definitions/EmployeeType" fullName: #cn type: string description: Full Name of the user givenName: #givenName type: string description: Given Name of the user surname: #sn type: string description: Surname of the user title: #title type: string description: Mission designated to the user titleCode: #titleCode type: string description: Code of mission designated to the user locationName: #businesCategory type: string description: Site where the user works locationCode: #privBusinessCategoryCode type: string description: Code from site where the user works department: #departmentNumber type: string description: Department of the user contractStartDate: #privContractStartDate type: string format: date description: Contract start date of the user email: #mail type: string description: Email of the user telephoneNumber: #telephoneNumber type: string description: Telephone number of the user´s department mobile: #mobile type: string description: Mobile phone number of the user manager: #manager type: string description: Manager´s distinguish name from LDAP o: #o type: string description: Brands abbreviation. E.g. LM for Leroy Merlin ou: #ou type: string description: Organization unit birthdate: #birthdate type: string format: date description: Birthdate from user createdBy: #privCreatedBy type: string description: Distinguish name from user that created the registry in LDAP modifiedBy: #privModifiedBy type: string description: Distinguish name from user that modified the registry in LDAP jpegPhoto: #jpegPhoto type: string format: byte description: Binary Base64 represeting JPEG photo. ErrorResponse: type: string DefaultResponse: type: string paths: /auth/login: # binds a127 app logic to a route x-swagger-router-controller: "authentication" x-a127-apply: {} post: summary: Try to login description: Try to login with credencials based on username/password. This API will return all "habitant" information if login were successful. # used as the method name of the controller operationId: login consumes: - "application/x-www-form-urlencoded" tags: - Auth parameters: - name: username in: formData description: Username to login. required: true type: string - name: password in: formData description: Password to login. required: true type: string format: password - name: userType in: formData required: true default: customer <<: *UserType responses: "200": description: Success. If there are attributes with empty values they won´t be returned schema: # a pointer to a definition $ref: "#/definitions/AuthResponse" "401": description: Unauthorized schema: $ref: "#/definitions/ErrorResponse" "500": description: Internal Server Error schema: $ref: "#/definitions/ErrorResponse" "501": description: Not Implemented schema: $ref: "#/definitions/ErrorResponse" tags: - name: Auth description: Authentication and authorization related APIs. <br />
Solved! Go to Solution.
Hi
you have
consumes: - application/json produces: - application/json
And you are sending form encoded parameters. I think that's not going to work.
Check your swagger, change the consumes and produces. Also change (formally state) the type of the inbound parameters, if they're form params.
Hi, thanks for your answer,
i have had a consumes : "application/json" for others paths.
if you see, i also have a consumes into my path.
operationId: login consumes:-"application/x-www-form-urlencoded" tags:-Auth parameters:
I already have tested and changed my swagger putting everything for application/x-www-form-urlencoded but it didn't work.
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |