首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >go-swagger在POST请求中不验证身体

go-swagger在POST请求中不验证身体
EN

Stack Overflow用户
提问于 2019-05-22 13:18:27
回答 1查看 1.5K关注 0票数 0

Swagger忽略POST请求正文中的必需字段。

复制步骤:

  1. 描述标号文件
代码语言:javascript
复制
swagger: "2.0"
info:
  title: Sample API
  description: API description in Markdown.
  version: 1.0.0
host: api.example.com
schemes:
  - http
paths:
  /users:
    post:
      operationId: UserCreate
      parameters:
        - name: body
          in: body
          required: true
          schema:
            allOf:
              - $ref: "#/definitions/ID"
              - $ref: "#/definitions/User_object"
              - type: object
                required:  # HERE! IT IS NOT WORKING
                  - ID
                  - genderCode
                  - birthDate
                  - code
      produces:
        - application/json
      consumes:
        - application/json
      responses:
        200:
          description: "OK"

definitions:
  ID:
    title: ID
    properties:
      GUID:
        type: string
        description: "ID"
        format: uuid

  User_object:
    title: User_object
    properties:
      genderCode:
        type: string
      birthDate:
        type: string
        format: date
      code:
        type: string
  1. 生成api

生成服务器-f swaggerfile.yaml -t api

  1. 描述单个处理程序:
代码语言:javascript
复制
api.UserCreateHandler = operations.UserCreateHandlerFunc(func(params operations.UserCreateParams) middleware.Responder {
        return middleware.NotImplemented("MUST NOT BE PRINTED")
    })
  1. 向生成的api发出请求:

curl -X POST -H“内容-类型: application/json”-d '{"foo":"bar"}‘localhost:{{host}}/users

预期结果:

400个错误请求

给定结果:

501不得印刷

EN

回答 1

Stack Overflow用户

发布于 2019-05-22 22:06:41

我个人的解决办法是

代码语言:javascript
复制
api.UserCreateHandler = operations.UserCreateHandlerFunc(func(params operations.UserCreateParams) middleware.Responder {
        if params.Body.UserObject == (models.UserObject{}) {
            return //... your BAD REQUEST type
        }
        return middleware.NotImplemented("MUST NOT BE PRINTED")
    })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56257810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档