Простой запрос GeoJSON от клиента на экспресс-сервер и отправка обратно

#node.js #express #fetch #geojson

Вопрос:

Я знаю, что это очень простой вопрос, но я не мог понять его прямо сейчас.

Я хочу запросить названия и местоположение некоторых национальных парков через их api. Итак, у меня есть это index.html

 <!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Frontend</title>
  </head>
  <body>
    <button id="btn">Get Parks</button>
    <script src="index.js"></script>
  </body>
</html>

 

Затем есть интерфейс javascript в index.js

 btn = document.querySelector("#btn");
btn.onclick = async () => {
  let url = "/api";
  const response = await fetch(url);
  console.log(response);
};
 

Который отправляет запрос get на сервер и /api маршрут. Это обрабатывается в server.js файле, который выглядит следующим образом:

 import fetch from "node-fetch";
import express from "express";

const app = express();
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Starting server at port ${port}`);
});

app.use(express.static("public"));

app.get("/api", async (req, res) => {
  let resp = await fetch(
    "https://www.nps.gov/lib/npmap.js/4.0.0/examples/data/national-parks.geojson"
  );
let data = resp.json();
  res.send(data);
});
 

Но то, что я получаю, — это не то, что я хочу. То, что я получаю в ответ, — это ответ, содержащий ссылку на фактические данные, которые мне нужны. Хотя я делаю resp.json() это, кажется, не получаю GeoJSON.

 Response { type: "basic", url: "http://localhost:3000/api", redirected: false, status: 200, ok: true, statusText: "OK", headers: Headers, body: ReadableStream, bodyUsed: false }
​
...
 

Когда я делаю то же самое в сценарии узла, я получаю фактический geojson…

 import fetch from "node-fetch";
let res = await fetch(
  "https://www.nps.gov/lib/npmap.js/4.0.0/examples/data/national-parks.geojson"
);
let response = await res.json();
console.log(response);
 

Так как же я могу передать geojson с сервера-узла на интерфейс? Извините, я знаю, что не вижу чего-то очень очевидного…