Почему SwaggerHub возвращает ошибку 403, когда я тестирую свое определение OpenAPI?

#openapi #swaggerhub

Вопрос:

У меня есть следующее определение OpenAPI, размещенное на SwaggerHub:
https://app.swaggerhub.com/apis/MyFirstAPI/1.0.1-oas3

 openapi: 3.0.0
servers:
  - url: http://api.myfirstapi.com/
info:
  version: 1.0.1-oas3
  title: Equ API
paths:
  /query:
    get:
      tags:
        - developers
      parameters:
        - in: query
          name: searchString
          schema:
            type: string
      responses:
        '200':
          description: search results matching criteria
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Equity'
        '400':
          description: There is 400
components:
  schemas:
    Equity:
      ...
 

Когда я проверяю GET /query запрос, он возвращает ошибку 403:

 content-length: 0 
date: Fri,10 Sep 2021 14:32:54 GMT 
server: nginx/1.18.0   Phusion Passenger(R) 6.0.8 
status: 403 Forbidden 
via: 1.1 b5d86079363e9709b4c4051d3c94ac3d.cloudfront.net (CloudFront) 
x-amz-cf-id: pYbLwlrEHg5DXkGe5FkysAjSjbSDqUg7Rrhbv-Dt8Xwt8JuPRMAW3Q== 
x-amz-cf-pop: DEL54-C1 
x-cache: Error from cloudfront 
x-powered-by: Express,Phusion Passenger(R) 6.0.8
 

Почему возникает эта ошибка и как ее исправить?

Комментарии:

1. Нужно больше деталей. Какой инструмент вы используете для тестирования пользовательского интерфейса запроса — Swagger, Почтальон, что-то еще? Если API, который вы тестируете, является общедоступным — пожалуйста, добавьте URL-адрес запроса и параметры в свой вопрос. Ответ 403 указывает на ошибку разрешения — вы включили в запрос правильную информацию для аутентификации?

Ответ №1:

Эта ошибка 403 несколько вводит в заблуждение. Фактическая проблема здесь заключается в том, что целевой сервер для запросов api.myfirstapi.com — на самом деле не существует. В servers списке должен быть указан ваш реальный сервер(ы).

Если вы разрабатываете новый API и у вас еще нет живого сервера, вы можете использовать макет сервера SwaggerHub для сравнения ответов и тестирования вызовов API.

Чтобы добавить макет в определение API:

  1. Щелкните имя API на панели инструментов редактора.
  2. Перейдите на вкладку Интеграции и нажмите Добавить новые интеграции. SwaggerHub: Добавление новой интеграции на уровне API
  3. Выберите Автоматическое издевательство над API из списка и нажмите Добавить.
  4. Введите любое значение для Имени (например, макет), оставьте другие параметры как есть и нажмите Создать и выполнить.
  5. Закройте оставшиеся диалоговые окна.

Это создает макет сервера для вашего API и добавляет его в servers список в определении вашего API:

 servers: 
  - description: SwaggerHub API Auto Mocking
    url: https://virtserver.swaggerhub.com/OWNER_NAME/API_NAME/VERSION
 

Обязательно выберите этот сервер в документах API, прежде чем тестировать вызовы API.

Макет сервера SwaggerHub в списке серверов в интерактивных документах API