gpt4 book ai didi

header - Apollo 服务器设置响应 header

转载 作者:行者123 更新时间:2023-12-04 12:40:52 27 4
gpt4 key购买 nike

我目前正在使用 Apollo 服务器。我正在尝试在响应 header 中设置一个属性。并且此属性是从客户端 graphQL 请求 header 中检索的。

我在网上查了一下。并看到了诸如使用插件或扩展之类的答案。我在下面尝试过:

class FormatErrorWithContextExtension extends GraphQLExtension {
willSendResponse(o) {
const { context, graphqlResponse } = o;
const { headers } = context;
const myVar = headers['variable']
o.graphqlResponse.http.headers.set("variable", myVar);
}
}

function createApolloServer() {
return new ApolloServer({
typeDefs,
resolvers,
extensions: [() => new FormatErrorWithContextExtension()],
...
});
}

从客户端看来,它似乎未能将其设置为响应 header 。有什么想法吗?

最佳答案

对于"apollo-server": "^2.9.11",您可以在ApolloServerformatResponse方法中设置自定义响应头类。

例如

server.ts:

import { ApolloServer, gql } from 'apollo-server';
import { GraphQLResponse, GraphQLRequestContext } from 'apollo-server-express/node_modules/apollo-server-core';

const typeDefs = gql`
type Query {
_root: String
}
`;
const resolvers = {
Query: {
_root: () => '_root',
},
};

const server = new ApolloServer({
typeDefs,
resolvers,
formatResponse: (response: GraphQLResponse | null, requestContext: GraphQLRequestContext<any>) => {
if (requestContext.response && requestContext.response.http) {
requestContext.response.http.headers.set('custom-key', 'custom-value');
}
return response as GraphQLResponse;
},
});

server.listen().then(({ url }) => {
console.log(`Apollo server is listening on ${url}`);
});

现在,您可以从客户端获取 custom-key 响应 header 。

浏览器中的响应 header

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=utf-8
custom-key: custom-value
Content-Length: 27
ETag: W/"1b-AQpb9d3mRlH09xAPu3kjw6hdh0M"
Date: Wed, 08 Jan 2020 05:37:05 GMT
Connection: keep-alive

关于header - Apollo 服务器设置响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59177650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com