У меня проблемы с настройкой API. Я получаю следующую ошибку:
[
{
"message": "Wrong data in the response. ",
"error": [
{
"code": "INVALID_TYPE",
"params": [
"object",
"string"
],
"message": "Expected type object but found type string",
"path": "#/"
}
],
"content": "{\"success\":true,\"payload\":{\"userId\":47}}"
}
]
С заголовками ответа:
connection: keep-alive
content-length: 233
content-type: application/json; charset=utf-8
date: Fri, 17 Apr 2020 08:09:38 GMT
etag: W/"e9-2OFjPp0RZp8asoi4T2vo8yXiZxE"
x-powered-by: Express
Теперь я ожидал, что это сработает, так как этот же код работает при использовании Swagger 2.0 вместо oas-tools 3.0.1. Это мой файл чванства:
openapi: 3.0.1
info:
title: Swagger test
version: 0.0.1
servers:
- url: http://localhost:8081/
paths:
/add-user:
post:
x-router-controller: 'addUser'
description: Adds a user to the database
operationId: add
requestBody:
$ref: '#/components/requestBodies/AddUser'
responses:
201:
description: Successfully added the user to the database
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
payload:
type: object
properties:
userId:
type: integer
И это мой сценарий узла, в котором я отправляю ответ обратно:
db
.query(insert_user_query, [username, password])
.then(function(result) {
var response = {
"success": true,
"payload": {
"userId": result.rows[0].user_id
}
}
res.status(201).json(response)
})
Теперь я полностью растерялся, так как строю JSON в переменной ответа, и я устанавливаю код ответа 201 и отправляю его как json (который добавляет приложение / json тип содержимого), и все же Swagger интерпретирует его как строку вместо объекта.
Кто-нибудь здесь, кто мог бы, пожалуйста, указать мне в правильном направлении?