Có cách nào để xác định loại HashMap hoặc Generic Object trong phần mô hình không? Tôi có dịch vụ REST trả về sản phẩm và các sản phẩm đó có thể có các tùy chọn khác nhau. Thuộc tính tùy chọn về cơ bản là HashMap, trong đó id là tên tùy chọn và giá trị của nó là giá trị tùy chọn.Swagger HashMap loại thuộc tính
Trả lời
Có thể.
Trong OpenAPI (. Fka Swagger) 2.0 và 3.0, một hashmap luôn là một bản đồ <string, something>
:
- Mấu chốt luôn là một chuỗi và không cần phải được xác định.
- Loại giá trị là những gì bạn muốn và được xác định với
additionalProperties
.
Hãy nói rằng bạn muốn mô tả một hashmap <string, string>
như thế này:
{
"key1": "value1",
"key2": "value2"
}
Các tương ứng OpenAPI 2.0 định nghĩa sẽ là:
definitions:
StringStringMap:
type: object
additionalProperties:
type: string
Trong OpenAPI 3.0 định nghĩa sẽ là:
components:
schemas:
StringStringMap:
type: object
additionalProperties:
type: string
Một hashmap <string, object>
như thế này
{
"key1": {"someData": "data", "someOtherData": true},
"key2": {"someData": "data2", "someOtherData": false}
}
sẽ được xác định theo cách này trong OpenAPI 2.0:
definitions:
ComplexObject:
type: object
properties:
someData:
type: string
someOtherData:
type: boolean
StringObjectMap:
type: object
additionalProperties:
$ref: "#/definitions/ComplexObject"
và trong OpenAPI 3.0:
components:
schemas:
ComplexObject:
type: object
properties:
someData:
type: string
someOtherData:
type: boolean
StringObjectMap:
type: object
additionalProperties:
$ref: "#/definitions/ComplexObject"
Tôi vừa mới được bảo hiểm này trong chiều sâu trong part 4 of my OpenAPI (fka Swagger tutorial).
OpenAPI (fka. Swagger) specification explains briefly this too.
Điều này hữu ích và hoạt động nếu cấu trúc dữ liệu cho các giá trị là tất cả các loại ComplexObject. Tuy nhiên, tôi có một kịch bản mà cấu trúc của các giá trị khác nhau tùy thuộc vào mẫu của khóa. Trong JSON Schema, tôi có thể diễn tả điều này một cách dễ dàng bằng cách sử dụng patternProperties. Bất kỳ suy nghĩ về cách người ta có thể diễn tả điều này trong OAS/Swagger? –
Tôi đang sử dụng chữ thập phân 2.0. Tôi muốn nhận được
Bạn đang sử dụng hương vị nào của Swagger? (jax-rs, play, etc) – Eyal
@Eyal: Chúng tôi đang sử dụng swagger-ui và có cùng một vấn đề. Bạn có giải pháp hay giải pháp khác không? –
@JanHartung Không, chúng tôi không có quá nhiều bản đồ trong api của chúng tôi ... bạn có thể muốn đăng ký [yêu cầu tính năng này trong hệ thống theo dõi vấn đề vênh vang.] (Https://github.com/wordnik/swagger- core/issues/244) – Eyal