建立一个快速服务器来呼叫api。我们成功地在服务器中成功请求了JSON对象。我们现在的问题是将它显示为客户端中的完整JSON对象。当服务器从api请求时,json数据被切断。有什么建议?我试过解析而不是stringify但是得到了这个错误。
SyntaxError:JSON输入的意外结束
at Object.parse(native)
at fetch.then.x(/Users/server.js:26:19)
at process._tickCallback(internal / process / next_tick.js:103:7)
这是使用stringify的服务器代码。
var express = require('express');
var fetch = require('node-fetch');
var cors = require('cors');
const util = require('util');
const app = express();
var inflate = require('inflation')
var raw = require('raw-body')
const json = require('body-parser').json();
app.use(cors())
const PORT = 3001
app.listen(PORT, () => {
console.log(`Express server is running on port: ${PORT}!`);
});
app.get('/foo', (req,res) => {
let dataUrl = 'www.apiURL.com/data.json';
fetch(dataUrl)
.then(x => {
console.log(x.body._readableState.buffer.head.data.toString())
let decompressed = inflate(x.body._readableState.buffer.toString());
res.send(JSON.stringify(x.body._readableState.buffer.head.data.toString()));
})
.catch(err => console.log(err))
})
这是客户端代码。
componentDidMount(){
fetch(serverUrl)
.then(res => {
res.json()
.then(body => {
this.setState({
clubData: body
})
console.log(res)
});
})
.catch(err => console.log(err))
为什么数据会被切断?当它是字符串形式时没关系,因为缓冲区也被切断了。
答案 0 :(得分:0)
您的客户端代码应如下所示。
componentDidMount(){
fetch(serverUrl)
.then(res => res.json())
.then(body =>
this.setState({
clubData: body
}))
.catch(err => console.log(err))
}
如果这解决了您的问题,请告诉我,如果还有其他我缺少的话,我可以更新答案