«сообщение»: «Запрос не выполнен с кодом состояния 500», «имя»: «Ошибка», «стек»: «Ошибка: запрос не выполнен с кодом состояния 500 \ n - PullRequest
0 голосов
/ 14 февраля 2020

Я хотел получить данные из открытого API по этой ссылке . Согласно документации, HTTP-метод должен быть POST, а Content-Type должен быть либо «application / graphql», либо «application / json». Я использовал сервер узла express для получения данных. Но при запуске сервера я получил ошибку. Из этого API я хотел отобразить в браузере c расписание перевозок между одним местоположением в другое местоположение.

Ps. Я никогда не загружал Graphql с открытым 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}!`));

1 Ответ

0 голосов
/ 14 февраля 2020

Если вы заметили в Axe ios документы здесь , вам не нужно указывать метод в ваших настройках. (Удалить это method: "POST",).

Кроме того, вы захотите изменить запрос на .post( вместо .get(, как у вас

Вам также потребуется включить тело в свой запрос. Это будет то, где вам нужно выяснить, что вы хотите. Я не уверен, какие маршруты вы хотите отобразить, но в качестве примера:

let data = {
  routes(name: "10") {
    gtfsId
    shortName
    longName
    mode
  }
}

Вы можете найти множество примеров того, какими должны быть ваши данные для любого запроса, который вы хотите

To сложите все это, у вас будет что-то вроде этого:

axios.post(url, data, {
    headers: {
        Accept: "application/json, text/plain, */*",
        "Content-Type": "application/graphql"
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...