Swagger игнорирует обязательные поля в теле запроса POST.
Шаги для воспроизведения:
- Опишите файл swaggerfile
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
Генерация API
swagger Генерация сервера -f swaggerfile.yaml -t api
Опишите один обработчик:
api.UserCreateHandler = operations.UserCreateHandlerFunc(func(params operations.UserCreateParams) middleware.Responder {
return middleware.NotImplemented("MUST NOT BE PRINTED")
})
Сделать запрос к сгенерированному API:
curl -X POST -H "Тип содержимого: application / json" -d '{"foo": "bar"}'localhost: {{host}} / users
Ожидаемый результат:
400 Неправильный запрос
Заданный результат:
501 НЕ ДОЛЖНЫ ПЕЧАТЬ