"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 包含 queryvariables) ...您可以从客户端测试 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." 问题

为啥我从 Postman 收到此 "message": "Internal server error"

向 laravel 服务器发送 POST 请求时获取 "message":"Unauthenticated."