【问题标题】:Why is my data being interpreted as a readable stream instead of a json object?为什么我的数据被解释为可读流而不是 json 对象?
【发布时间】: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()
    }
}

这些文件位于单独的文件中 - 为简洁起见,将它们加入此处。 任何帮助将不胜感激!

【问题讨论】:

标签: spring spring-boot kotlin


【解决方案1】:

事实证明,我立即返回了一个 Promise,并且不得不设置一个异步函数来处理该请求。

  const { isLoading, error, data } = useQuery("repoData", 
  async () => {
    const data = await fetch("https://url_here")
    .then(function(response) {
      return response.json()
    }
  
  )  
  setData(data)
  }

对于上下文,此请求包含在 react-query 中,但没有它也可以工作。

【讨论】:

    猜你喜欢
    • 2013-07-08
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多