如何摆脱 swagger 中的错误 - 没有定义的 post 操作。", "allowedMethods": [ > "GET" ] }

How to get rid of the error in swagger - there is no defined post operation.", "allowedMethods": [ > "GET" ] }

我 运行 大摇大摆地使用以下代码并在执行 POST 操作时遇到错误..

swagger: "2.0"
info:
  version: "0.0.1"
  title: Hello World App
# 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:
  /hello:
    # binds a127 app logic to a route
    x-swagger-router-controller: hello_world
    get:
      description: Returns 'Hello' to the caller
      # used as the method name of the controller
      operationId: hello
      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/HelloWorldResponse"
        # responses may fall through to errors
        default:
          description: Error
          schema:
            $ref: "#/definitions/ErrorResponse"
  /postpath:
    x-swagger-router-controller: hello_world

    post:
      description: add a new movie to the list
      # movie info to be stored
      operationId: postpath
      parameters:
        - name: title
          description: Movie properties
          in: body
          required: true
          schema:
            $ref: "#/definitions/Movie"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/GeneralResponse"
        default:
          description: Error
          schema:
            $ref: "#/definitions/ErrorResponse"        
  /swagger:
    x-swagger-pipe: swagger_raw
# complex objects have schema definitions
definitions:
  HelloWorldResponse:
    required:
      - message
    properties:
      message:
        type: string
  ErrorResponse:
    required:
      - message
    properties:
      message:
        type: string
  Movie:
    type: object
    properties:
      title:
        type: string
        description: task object name
      year:
        type: number
        description: task description
    required:
      - title
      - year
  GeneralResponse:
    type: object
    properties:
      success:
        type: number
        description: returns 1 if successful
      description:
        type: string
        description: a short comment 
    required:
      - success
      - description

下面是后面的hello_world.js。

'use strict';



var util = require('util');


module.exports = {
  hello: hello, postpath: postpath
};


function hello(req, res) {
  // variables defined in the Swagger document can be referenced using req.swagger.params.{parameter_name}
  var name = req.swagger.params.name.value || 'stranger';
  var hello = util.format('Hello, %s!', name, 'how are you?');

  // this sends back a JSON response which is a single string
  res.json(hello);
}

function postpath(req, res) {

var isOpen = true; // Details omitted
var doorStatus = isOpen;

res.json('Test');
}

我收到方法不允许的异常..

以下是堆栈跟踪..

{ "message": "Route defined in Swagger specification (/hello) but there is no defined post operation.", "allowedMethods": [ "GET" ] }

您定义了这个:

paths:
  /hello:
    get:

但您还想定义 POST:

paths:
  /hello:
    get:
        - something
    post:
        - something else