首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定node-fetch以获取JSON

指定node-fetch以获取JSON
EN

Stack Overflow用户
提问于 2019-09-14 00:02:26
回答 1查看 351关注 0票数 0

有没有办法为GET请求指定node-fetch来请求JSON?我试图到达的外部api端点发送回xml。

我知道我可以在前端做这样的事情,但是我能在我的节点服务器中做这件事吗?

代码语言:javascript
复制
const response = fetch(url, {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
  }
});

server.js

代码语言:javascript
复制
const express = require('express')
const path = require('path')
const bodyParser = require('body-parser')
const fetch = require('node-fetch')

const app = express()
const port = process.env.PORT || 5000

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))

app.get('/buses/location', (req, res) => {
  const apiURL = `${TRANSLINK_URL}${TRANSLINK_TOKEN}`

  fetch(apiURL)
    .then(response => {
      if (response.ok) {
         response.json()
         .then((data) => {
             res.json(data)
         })
        .catch(err => {
          console.log(err)
        })
      }
      else {
        res.sendStatus(response.status)
      }
    })
    .catch(error => {
        console.log(error)
    })
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-14 22:49:21

这段代码包含了application/json请求头,并且使用async/await进行了重构,您应该使用它而不是回调

代码语言:javascript
复制
app.get('/buses/location', async (req, res) => {
  const apiURL = `${TRANSLINK_URL}${TRANSLINK_TOKEN}`;
  try {
    const response = await fetch(apiURL, { headers: { 'Content-Type': 'application/json' }});
    const jsonResponse = await response.json();
    res.send(jsonResponse);
  }
  catch (e){
    console.log(e);
  }
})

但是,当请求时,您要访问的服务器必须支持json响应,否则您将不得不以xml格式管理数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57926962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档