如何消除swagger中的错误 - 没有定义的post操作。“,”allowedMethods“:[>”GET“]}

时间:2017-06-28 10:46:04

标签: javascript swagger swagger-ui

我在执行 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');
}

我得到方法不允许例外..

以下是stacktrace ..

  

{“message”:“在Swagger规范中定义的路由(/ hello)但是   没有定义的后期操作。“,”allowedMethods“:[       “GET”]}

1 个答案:

答案 0 :(得分:0)

您已经定义了:

paths:
  /hello:
    get:

但您还想定义POST:

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