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

[亡魂溺海] 提交于 2020-06-28 05:46:13

问题


I am running swagger with following code and getting error while performing POST operation..

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

Following is the hello_world.js behind that.

'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');
}

I am getting method not allowed exception..

Following is the stacktrace..

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


回答1:


You have defined this:

paths:
  /hello:
    get:

but you want to also define POST:

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


来源:https://stackoverflow.com/questions/44800314/how-to-get-rid-of-the-error-in-swagger-there-is-no-defined-post-operation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!