如何在 kotlin Springboot 中从 RestAPI 获取 Json 响应

How to get Json Response from RestAPI in kotlin Springboot

提问人:Pradeep Mishra 提问时间:11/17/2023 更新时间:11/17/2023 访问量:18

问:

最近,我将 SpringFox 更新为 Springdoc 开放 API 以进行与 swagger 相关的更改,显然,我观察到我所有的 API 响应都是 XML 格式,而之前它们是 JSON 格式。以下是我的 swagger 和 Jackson 依赖项文件片段build.gradle.kts

build.gradele.kt

id("org.springframework.boot") version "2.7.11"
id("io.spring.dependency-management") version "1.0.15.RELEASE"
kotlin("jvm") version "1.8.0"
kotlin("plugin.spring") version "1.6.21"
id("org.jetbrains.kotlin.plugin.jpa") version "1.6.21"

implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.11.1")
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.1")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.1")

implementation("org.springdoc:springdoc-openapi-webmvc-core:1.7.0")
implementation("org.springdoc:springdoc-openapi-ui:1.6.12")
implementation("org.springdoc:springdoc-openapi-data-rest:1.7.0")
implementation("org.springdoc:springdoc-openapi-kotlin:1.7.0")

implementation("com.github.kittinunf.fuel:fuel:2.3.1")
implementation("com.github.kittinunf.fuel:fuel-jackson:2.3.1")

我尝试删除依赖项,它有效,但对于某些具有 XML 响应的 API,它给了我一个错误。implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.1")

controller.kt

@Tag(description = "ABC details API", name = "abc")
@RestController
@RequestMapping("/api/x1")
class detailController(val detailService: DetailService) {


    @Operation(summary = "API to fetch details")
    @ResponseStatus(HttpStatus.OK)
    @GetMapping("/product/{id}", produces = ["application/json"], consumes = [MediaType.ALL_VALUE])
    @ApiResponse(responseCode = "200", description = "Ok",
        content =
    [Content(mediaType = "application/json", schema =
        Schema(implementation = DetailsResponseDTO::class))])
    fun fetchDetails(@Parameter(name = "productId", required = true)
                            @PathVariable("productId", required = true) productId:Int
        ): ProductDetailsResponseDTO? {
            return productDetailService.fetchDetails(productId)
        }
}

请提出建议。

java spring-boot kotlin springdoc-openapi-ui

评论


答: 暂无答案