HTML5 определяет внутренний «структурированный» алгоритм клонирования , который может создавать глубокие клоны объектов. Он по-прежнему ограничен определенными встроенными типами, но в дополнение к нескольким типам, поддерживаемым JSON, он также поддерживает Dates, RegExps, Maps, Sets, Blobs, FileLists, ImageDatas, редкие массивы, Typed Arrays , и, вероятно, больше в будущем. Он также сохраняет ссылки в клонированных данных, позволяя ему поддерживать циклические и рекурсивные структуры, которые могут вызывать ошибки для JSON.
Можете ли вы рассмотреть следующие моменты в вашем проекте:
Проверьте, есть ли у вас аннотации Spring и Swagger в вашем классе Controller.
@RestController
@RequestMapping(value = "/order")
@ApiResponses({
@ApiResponse(code = 400, message = "Bad Request"),
@ApiResponse(code = 401, message = "Unauthorized"),
@ApiResponse(code = 403, message = "Forbidden"),
@ApiResponse(code = 404, message = "Not Found"),
@ApiResponse(code = 415, message = "Unsupported Media Type"),
@ApiResponse(code = 422, message = "Unprocessable Entity")
})
public class OrderController {
// Controller class code.
}
Затем проверьте, есть ли у вашей конечной точки аннотации:
@PostMapping(
value = "/v1/new",
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE
)
@ApiOperation(
value = "Create new Order.",
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
)
public ResponseEntity<String> newOrder(
@RequestHeader(name = "Content-type", defaultValue = "application/json;charset=UTF-8")
@NonNull final String contentType,
@RequestBody @NotNull @Valid OrderDTO orderDTO) {
// Endpoint code.
}
Конфигурация Swagger with
SpringBoot:
Конфигурация Swagger without
SpringBoot:
Добавьте: @Configuration
, extends WebMvcConfigurationSupport
и переопределите метод addResourceHandlers
в своем классе SwaggerConfig.
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {
@Bean
public Docket api() {
//...
}
private ApiInfo getApiInfo() {
return new ApiInfo(
//...
);
}
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}