"message":"请求失败,状态码 500","name":"Error","stack":&q
Posted
技术标签:
【中文标题】"message":"请求失败,状态码 500","name":"Error","stack":"错误:请求失败,状态码 500\\n【英文标题】:"message":"Request failed with status code 500","name":"Error","stack":"Error: Request failed with status code 500\n"message":"请求失败,状态码 500","name":"Error","stack":"错误:请求失败,状态码 500\n 【发布时间】:2020-05-29 20:44:32 【问题描述】:我想从这个 link 的开放 API 中获取数据。根据文档,HTTP 方法必须是 POST,Content-Type 必须是“application/graphql”或“application/json”。我使用节点快递服务器来获取数据。但是在运行服务器时出现错误。通过这个 API,我想在浏览器上显示从一个位置到另一个位置的公共交通时间表。
附言。我从来没有获取过 Graphql open api。
const express = require("express");
const app = express();
const port = 3000;
const bodyParser = require("body-parser");
const axios = require("axios");
const morgan = require("morgan");
const cors = require("cors");
app.use(morgan("common"));
app.use(cors());
app.use(bodyParser.urlencoded( extended: true ));
const url = "https://api.digitransit.fi/routing/v1/routers/hsl/index/graphql";
app.get("/hsl/timetables", async (req, res, next) =>
axios
.get(url,
method: "POST",
headers:
Accept: "application/json, text/plain, */*",
"Content-Type": "application/graphql"
)
.then(response => res.send(response.data))
.catch(err =>
console.log("catch error", err), res.status(500).send(err);
);
);
app.listen(port, () => console.log(`Example app listening on port $port!`));
【问题讨论】:
您已将方法设置为POST
,但您仍在调用axios.get
,并且您的请求没有实际的正文。
你检查了我分享的链接吗?我使用了 axios.post 方法并添加了正文,但仍然出现同样的错误。
错误是什么?
"message":"Request failed with status code 500","name":"Error","stack":"Error: Request failed with status code 500
***.com/a/52868182/6124657 (data
包含 query
和 variables
) ...您可以从客户端测试 axios (fe react) ...api.digitransit.fi/graphiql/hsl - 检查开发工具中的标头/网络 - 将标头与您的反应 axios 请求进行比较......然后在节点中使用
【参考方案1】:
如果您在 Axios 文档 here 中注意到,则不需要在您的选项中包含该方法。 (删除此method: "POST",
)。
此外,您需要将请求更改为 .post(
而不是像您一样的 .get(
您还需要在请求中包含正文。这将是您需要弄清楚您想要什么的地方。我不确定您要显示哪些路线,但作为示例,
let data =
routes(name: "10")
gtfsId
shortName
longName
mode
您可以找到很多示例,说明您想要的任何查询的数据应该是什么
要加起来,你会得到这样的东西:
axios.post(url, data,
headers:
Accept: "application/json, text/plain, */*",
"Content-Type": "application/graphql"
)
【讨论】:
不。没有帮助@MindlessRouse。还是同样的问题。 我的数据结构是这样的:let data = plan(from, to, transportModes) itineraries: legs: startTime, endTime, mode, duration, realTime, distance, transitLeg; ;
以上是关于"message":"请求失败,状态码 500","name":"Error","stack":&q的主要内容,如果未能解决你的问题,请参考以下文章
收到错误 "errors":["message":"必须提供查询字符串。"]
"message": "无法读取未定义的属性 'query'",
"message": "方法 Illuminate\\Auth\\SessionGuard::factory 不存在。",
Laravel + VueJS 应用 Laravel Passport "message":"Unauthenticated." 问题