如何使用graphql-request获取HTTP状态码?
获取graphql-request请求的HTTP状态码
嘿,我超爱graphql-request的简洁感!你遇到的这个问题其实是因为request这个便捷方法默认只返回GraphQL查询的数据结果,并不会把HTTP响应的状态码这类底层信息暴露出来——你代码里拿到的response其实就是查询到的Post数据,自然没有status属性啦。
要获取HTTP状态码,你可以改用rawRequest方法,它会返回包含完整响应细节的对象,其中就包括状态码:
const { rawRequest } = require('graphql-request'); const query = `{ Post(id: 1) { id title views User { name } Comments { date body } } }`; rawRequest('http://localhost:3000', query) .then(({ data, status }) => { console.log('HTTP状态码:', status); // 这里就能拿到状态码了 console.log('查询结果:', data); }) .catch(err => { // 如果是HTTP层面的错误(比如404、500),错误对象里也能拿到状态码 if (err.response) { console.error('请求错误状态码:', err.response.status); } throw new Error(err); });
补充说明:
request方法是rawRequest的封装,它自动提取了data字段返回,简化了调用但丢失了底层响应信息- 如果你的项目已经大量使用
request方法,也可以通过创建GraphQLClient实例并自定义请求拦截器来获取状态码,但rawRequest是最直接的方案
内容的提问来源于stack exchange,提问作者DonJuanEco
相关产品推荐
相关产品推荐

