Мне нужно добавить несколько примеров для @Parameter в springdoc-openapi, но это не генерирует данные примеры
Я пытаюсь добавить в свой проект документацию по чванству. Мне нужно добавить несколько примеров для @Parameter в @RequestBody для Sample.class. Следующий фрагмент кода - это то, как он упоминается в документации.
@PostMapping("/")
public Sample createSample(@Parameter(description="Sample description", examples = {
@ExampleObject(name="foo", description = "na",summary = "na",value = "{\n" +
" \"id\": 10,\n" +
" \"name\": \"ashith\",\n" +
" \"description\": \"none\"\n" +
"}"),
@ExampleObject(name="bar",description = "na",summary = "na",value = "{\n" +
" \"id\": 20,\n" +
" \"name\": \"Akshatha\",\n" +
" \"description\": \"ok\"\n" +
"}")
}
)
@RequestBody Sample sample) {
Генерируемый вывод yaml следующий:
openapi: 3.0.1
info:
title: OpenAPI definition
version: v0
servers:
- url: 'http://localhost:8080/'
description: Generated server url
paths:
/api/another/:
post:
tags:
- another-controller
operationId: createSample
requestBody:
description: Sample description
content:
application/json:
schema:
$ref: '#/components/schemas/Sample'
required: true
responses:
'200':
description: default response
content:
'*/*':
schema:
$ref: '#/components/schemas/Sample'
'400':
description: default response
content:
'*/*':
schema:
type: string
'404':
description: default response
content:
'*/*':
schema:
type: string
Кажется, здесь отсутствуют примеры, которые должны были быть добавлены в соответствии с кодом
1 ответ
@Parameter
использует ParameterIn
, который указывает, является ли это заголовком, запросом или путем, предоставленным openapi (см. ниже).
package io.swagger.v3.oas.annotations.enums;
public enum ParameterIn {
DEFAULT(""),
HEADER("header"),
QUERY("query"),
PATH("path"),
COOKIE("cookie");
private String value;
private ParameterIn(String value) {
this.value = value;
}
public String toString() {
return String.valueOf(this.value);
}
}
Вместо этого вы должны использовать RequestBody
из библиотеки openapi, как показано ниже
@io.swagger.v3.oas.annotations.parameters.RequestBody(content = {
@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = @ExampleObject(value = "{\"key1\": \"value1\", \"key2\":\"value2\", \"key3\":\"value3\"}"))
})
Вы можете добавить это на уровне метода или параметра.