Ошибка Swagger: ptr должен быть указателем JSON

#javascript #java #express #swagger #openapi

#javascript #java #выразить #swagger #openapi

Вопрос:

Я пытаюсь запустить свой файл swagger, и я продолжаю получать эту ошибку.

 Error: ptr must be a JSON Pointer
    at pathFromPtr (/Users/salma/Desktop/swaggerIntegration/node_modules/json-refs/index.js:1128:11)
    at /Users/salma/Desktop/swaggerIntegration/node_modules/json-refs/index.js:293:45
    at process.runNextTicks [as _tickCallback] (internal/process/next_tick.js:47:5)
    at Function.Module.runMain (internal/modules/cjs/loader.js:800:11)
    at executeUserCode (internal/bootstrap/node.js:526:15)
    at startMainThreadExecution (internal/bootstrap/node.js:439:3)  

и вот мой файл swagger

 swagger: "2.0"
info:
  version: "0.0.1"
  title: employees DB
# during dev, should point to your local machine
host: localhost:10010
# basePath prefixes all resource paths 
basePath: /
# 
schemes:
  # tip: remove http to make production-grade
  - http
  - https
# format of bodies a client can send (Content-Type)
consumes:
  - application/json
# format of the responses to the client (Accepts)
produces:
  - application/json
paths:
  /employees:
    # binds a127 app logic to a route
    x-swagger-router-controller: employees
    get:
      description: Returns 'Hello' to the caller
      # used as the method name of the controller
      operationId: index
      parameters:
        - name: name
          in: query
          description: The name of the person to whom to say hello
          required: false
          type: string
      responses:
        "200":
          description: Success
          schema:
            # a pointer to a definition
            $ref: "#/definitions/employeesListBody"
        # responses may fall through to errors
        default:
          description: Error
          schema:
            $ref: "#/definitions/ErrorResponse"
  /swagger:
    x-swagger-pipe: swagger_raw
# complex objects have schema definitions
definitions:
  employeesListBody:
    required:
      - employees
    properties:
      employees:
        type: array
        items:
          $ref: "#definitions/Employee"

  Employee:
    required:
      - name
      - email
      - position
    properties:
        name:
          type: string
        email:
          type: string
        position:
          type: string
        age:
          type: integer
          minimum: 20
          
  ErrorResponse:
    required:
      - message
    properties:
      message:
        type: string  

есть идеи, как это решить?
есть ли более простой способ улучшить файл swagger? потому что я получаю много ошибок при синтаксическом анализе.
также есть ли у кого-нибудь хороший пример использования swagger с express и mongodb?
большое спасибо.

Ответ №1:

В одной из ссылок отсутствует / после # :

 $ref: "#definitions/Employee"
  

Измените его на:

 $ref: "#/definitions/Employee"
#       ^
  

Если вы вставите свое определение в http://editor.swagger.io , это показывает, где именно ошибка.

Проверка синтаксиса в редакторе Swagger