Swagger выдает "Не удалось разрешить ссылку" - PullRequest
0 голосов
/ 08 марта 2020

В процессе обучения (с TestDriven.io) я изучаю Swagger или OpenApi. Я получаю эту ошибку от Swagger: Could not resolve reference: Could not resolve pointer: /components/schemas/user does not exist in document эта ссылка явно находится в файле json, так почему он жалуется? (этот текст должен соответствовать минимальному количеству символов на сайте в посте и не имеет отношения к самому вопросу)

{
  "openapi": "3.0.2",
  "info": {
    "version": "0.0.1",
    "title": "Users Service",
    "description": "Swagger spec for documenting the users service"
  },
  "servers": [
    {
      "url": "http://localhost"
    }
  ],
  "paths": {
    "/users/ping": {
      "get": {
        "summary": "Just a sanity check",
        "responses": {
          "200": {
            "description": "Will return 'pong!'"
          }
        }
      }
    },
    "/users": {
      "get": {
        "summary": "Returns all users",
        "responses": {
          "200": {
            "description": "user object"
          }
        }
      }
    },
    "/users/{id}": {
      "get": {
        "summary": "Returns a user based on a single user ID",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of user to fetch",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "user object"
          }
        }
      }
    },
    "/auth/register": {
      "post": {
        "summary": "Creates a new user",
        "requestBody": {
          "description": "User to add",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/user-full"
              }
            }
          }
        }
      },

      "responses": {
        "200": {
          "description": "user object"
        }
      }
    },

    "/auth/login": {
      "post": {
        "summary": "Logs a user in",
        "requestBody": {
          "description": "User to log in",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/user"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully logged in"
          }
        }
      }
    },
    "/auth/status": {
      "get": {
        "summary": "Returns the logged in user's status",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "user object"
          }
        }
      }
    },
    "/auth/logout": {
      "get": {
        "summary": "Logs a user out",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully logged out"
          }
        }
      }
    },
    "components": {
      "securitySchemes": {
        "bearerAuth": {
          "type": "http",
          "scheme": "bearer"
        }
      },

      "schemas": {
        "user": {
          "properties": {
            "email": {
              "type": "string"
            },
            "password": {
              "type": "string"
            }
          }
        },
        "user-full": {
          "properties": {
            "username": {
              "type": "string"
            },
            "email": {
              "type": "string"
            },
            "password": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}

1 Ответ

1 голос
/ 08 марта 2020

Секция components должна находиться на верхнем уровне файла JSON, например:

{
  "openapi": "3.0.2",
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    ...
  },
  ...
}

Ошибка состояла в том, что components были внутри paths, а не сверху уровень.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...