Julia Genie 路由输入意外结束

问题描述 投票:0回答:1

我不断收到此错误:

############################错误堆栈跟踪###################### ### 预期输入结束 线路:0 周围:...11092×16 DataFrame 行...

但是当我在单独的终端中运行代码(不包括路由)时,它运行得很好,返回证券符号的 DataFrame 以及有关它们的一些信息。

我做错了什么? (请注意,此处发布的api密钥是可发布密钥,只能访问免费数据。

using Genie, Genie.Renderer.Json, Genie.Requests
using HTTP, JSON
using DataFrames

route("/tickers", method = POST) do
  message = jsonpayload()
#  (:echo => (message["message"] * " ") ^ message["repeat"]) |> json
    syms = HTTP.request("GET","https://acre.iex.cloud/v1/data/CORE/REF_DATA?token=pk_79891f5cbcce4099ae063588956f937a")
    schema_req = HTTP.request("GET","https://acre.iex.cloud/v1/data/CORE/REF_DATA?schema=true&token=pk_79891f5cbcce4099ae063588956f937a")
    sbs = syms.body |> String |> JSON.parse
    smat = sbs .|> values .|> collect |> (x->reduce(hcat,x)) |> (x->permutedims(DataFrame(x,:auto)))
    schema = schema_req.body |> String |> JSON.parse |> first |> keys |> collect
    rename!(smat,Symbol.(schema))
end

route("/send") do
  response = HTTP.request("POST", "http://localhost:8000/tickers", [("Content-Type", "application/json")], """{"exchanges":"XNYS", "type":"cs"}""")
  response.body |> String |> JSON.parse
end

up(async = false)

最终,我希望“/tickers”路由成为 API 后端,并且

/send
路由存在于桌面应用程序中(不一定作为网页),因此无需严重依赖格式化
/send
路由即可进行回答非常欢迎。

谢谢!

rest http julia http-status-code-500 genie.jl
1个回答
0
投票

我发现同时导入

JSON
Genie.Renderer.Json
会重载
json
这个名字,而且我需要使用Genie的json解析方法来解析
response.body
,所以我需要将
json
指定为
Genie.Renderer.Json.json

因此

/send
路线应如下所示:

route("/send") do
  response = HTTP.request("POST", "http://localhost:8000/tickers", [("Content-Type", "application/json")], """{"exchanges":"XNYS", "type":"cs"}""")
  response.body |> String |> Genie.Renderer.Json.json
end

输出看起来真的很难看,所以我想要一种方法来改变它。

© www.soinside.com 2019 - 2024. All rights reserved.