首页 > 解决方案 > 获取 apollo-rest-datasource 发布请求的 Response-Body

问题描述

如何获取 Apollo REST-Datasource 模块提交的 Post-Request 的响应体?

数据接口:

async postEntry(body) {
return this.post(
  "/domain.com/myService",
  body
).catch((err) => console.log(err));

解析器:

  Mutation: {
    addEntry: async (_source, { entry }, { dataSources }) => {
    const response = await dataSources.dataAPI.postEntry(entry);
    return response;
},

响应仅包含不同的标头。与响应包含预期正文的简单 Get-Request 不同。

参考:NPM 站点 apollo-datasource-rest

标签: javascriptrestgraphqlapolloapollo-server

解决方案


可以通过覆盖RESTDataSource'didReceiveResponse方法来获取响应对象的标头。

这是一个代码片段,如果您只关心标题:

async didReceiveResponse(response, _request) {
    // Extract the required headers from response and return them
    return {
        header_name: response.headers.get('header_name'),
        // ...
    };
}

或者,如果您希望将标头与默认响应放在一起:

async didReceiveResponse(response, _request) {
    return super.didReceiveResponse(response, _request).then((defaultReturnValue) => {
        return {
        ...defaultReturnValue,
        headers: {
            header_name: response.headers.get('header_name'),
        },
        };
    });
}

推荐阅读