使用 node.js 和 express 简单地获取请求
Posted
技术标签:
【中文标题】使用 node.js 和 express 简单地获取请求【英文标题】:Simple get request with node.js and express 【发布时间】:2016-05-18 18:25:27 【问题描述】:我已经尝试了所有方法,但无法弄清楚我做错了什么。我将数据从客户端发布到服务器没有问题,但反过来我无法让它工作。
我在客户中得到的唯一回复是ReadableByteStream
。
这是我在客户端上的代码:
export function getAllQuestionnairesAction()
return (dispatch, getState) =>
dispatch(getAllQuestionnairesRequest());
return fetch(API_ENDPOINT_QUESTIONNAIRE)
.then(res =>
if (res.ok)
console.log(res.body)
return dispatch(getAllQuestionnairesSuccess(res.body));
else
throw new Error("Oops! Something went wrong");
)
.catch(ex =>
return dispatch(getAllQuestionnairesFailure());
);
;
这是我在服务器上的代码:
exports.all = function(req, res)
var allQuestionnaires = [];
Questionnaire.find().exec(function(err, questionnaires)
if(!err)
console.log(questionnaires)
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify( a: 1 ));
//res.json(questionnaires)
else
console.log('Error in first query');
res.status(400).send(err);
);
【问题讨论】:
你使用的是什么版本/polyfill? 【参考方案1】:我在这里做一些猜测,因为我不确定您当前使用的是什么风格的fetch
,但我会根据fetch
的标准实现来尝试一下。
fetch
分辨率内的response
通常没有直接可读的.body
。请参阅here 了解一些简单明了的示例。
试试这个:
export function getAllQuestionnairesAction()
return (dispatch, getState) =>
dispatch(getAllQuestionnairesRequest());
return fetch(API_ENDPOINT_QUESTIONNAIRE)
.then(res =>
if (res.ok)
return res.json();
else
throw new Error("Oops! Something went wrong");
)
.then(json =>
console.log(json); // response body here
return dispatch(getAllQuestionnairesSuccess(json));
)
.catch(ex =>
return dispatch(getAllQuestionnairesFailure());
);
;
【讨论】:
我使用github.com/matthew-andrews/isomorphic-fetch和github.com/jakearchibald/es6-promise 我认为这证实了我的怀疑——看看他们在 isomorphic-fetch 的例子中是如何拥有return response.json();
的。看看我的建议是否适合你。重要的部分是return res.json()
,然后期待正文作为第二个.then()
中的承诺解决方案。
非常感谢,它有效。我对所有这些技术都是新手,很难找到有关此类内容的信息。我使用样板来开始帮助,他们在那里使用了这些库。你有什么资料可以让我读到这个 fetch 的东西吗?
@DanielStorch developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch 是一个很好的起点。以上是关于使用 node.js 和 express 简单地获取请求的主要内容,如果未能解决你的问题,请参考以下文章
简单的游戏循环 Socket.io + Node.js + Express
使用 Node.js、Handlebars 和 Express 进行模板继承