如何解决从 swaggerhub 生成的 Spring 引导代码无法在其他属性上抛出 400
我已登录 swaggerhub 并生成了一个示例清单 API,这是他们模板的一部分。
在 codegen options
中选择 spring
作为服务器。勾选 useBeanValidation
复选框。生成代码,测试一下。除了只有一件事外,验证按预期正常工作。我不想在 POST 负载上允许任何其他属性。
注意:openAPI 规范没有指定“additionalProperties”标志。在我的理解中,它默认为“假”。我也试图明确指定相同的内容。但没有运气。添加 additionalProperty 时没有抛出异常。
OpenAPI 规范
openapi: 3.0.0
servers:
# Added by API Auto Mocking Plugin
- description: SwaggerHub API Auto Mocking
url: https://virtserver.swaggerhub.com/xxxx/apionopenApi3/1.0.0
info:
description: This is a simple API
version: "1.0.0"
title: Simple Inventory API
contact:
email: you@your-company.com
license:
name: Apache 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
tags:
- name: admins
description: Secured Admin-only calls
- name: developers
description: Operations available to regular developers
paths:
/inventory:
get:
tags:
- developers
summary: searches inventory
operationId: searchInventory
description: |
By passing in the appropriate options,you can search for
available inventory in the system
parameters:
- in: query
name: searchString
description: pass an optional search string for looking up inventory
required: false
schema:
type: string
- in: query
name: skip
description: number of records to skip for pagination
schema:
type: integer
format: int32
minimum: 0
- in: query
name: limit
description: maximum number of records to return
schema:
type: integer
format: int32
minimum: 0
maximum: 50
responses:
'200':
description: search results matching criteria
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/InventoryItem'
'400':
description: bad input parameter
post:
tags:
- admins
summary: adds an inventory item
operationId: addInventory
description: Adds an item to the system
responses:
'201':
description: item created
'400':
description: 'invalid input,object invalid'
'409':
description: an existing item already exists
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryItem'
description: Inventory item to add
components:
schemas:
InventoryItem:
type: object
additionalProperties: False
required:
- id
- name
- manufacturer
- releaseDate
properties:
id:
type: string
format: uuid
example: d290f1ee-6c54-4b01-90e6-d701748f0851
name:
type: string
example: Widget Adapter
releaseDate:
type: string
format: date-time
example: '2016-08-29T09:12:33.001Z'
manufacturer:
$ref: '#/components/schemas/Manufacturer'
Manufacturer:
required:
- name
properties:
name:
type: string
example: ACME Corporation
homePage:
type: string
format: url
example: 'https://www.acme-corp.com'
phone:
type: string
example: 408-867-5309
type: object
additionalProperties: False
此有效负载在 post API 上获得了 400。
{
"id": "7f125802-7840-4ff0-8ddb-7c78c0948987","name11111": "Widget Adapter","releaseDate": "2016-08-29T09:12:33.001Z","manufacturer": {
"name": "ACME Corporation","homePage": "","phone": "408-867-5309"
}
}
预期为 400,但在发布时未获得此有效负载
{
"id": "7f125802-7840-4ff0-8ddb-7c78c0948983","name": "Widget Adapter","phone": "408-867-5309"
},"newkey" : "newValue"
}
任何人都可以帮忙解决这个问题..我想完全禁止其他属性并在这些请求上抛出 400..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。