【发布时间】:2022-01-21 20:14:00
【问题描述】:
我正在 Kotlin 中构建一个简单的 REST API,并使用 React 构建前端。我对 Kotlin 和 Spring 还很陌生,但我设法获得了与 Postman 一起使用的简单服务。我能够使用 JpaRepository 接口返回 SQL 表中的所有对象。当我通过 Postman 拨打电话时,我的输出符合预期(看起来像一个普通的 Json 对象)。
但是,当我通过标准 react fetch 进行调用时,主体会生成为 ReadableStream {locked: false}。我对可读流进行了一些研究,它们似乎主要用于图像。我尝试了 https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams 的 body.getReader(),但也没有用。
这是我的 Kotlin 代码:
import org.springframework.web.bind.annotation.*
@RestController
@RequestMapping("/api/catalog")
class ArtworkController (
private val artworkService: ArtworkService
) {
@CrossOrigin
@GetMapping("")
@ResponseBody
fun getData(): MutableList<Artwork> {
// println(artworkService.getArt().javaClass.kotlin)
return artworkService.getArt()
}
}
@Service
class ArtworkService(
private val artworkRepository: ArtworkRepository
){
fun getArt(): MutableList<Artwork> {
return artworkRepository.findAll()
}
}
这些文件位于单独的文件中 - 为简洁起见,将它们加入此处。 任何帮助将不胜感激!
【问题讨论】:
-
您可以删除 ResponseBody 注释,因为 RestController 包含:docs.spring.io/spring-framework/docs/current/javadoc-api/org/…
-
您的反应是等待什么媒体类型?这将发送“application/json”而不是任何流。
标签: spring spring-boot kotlin