如何将 2 buildService(上传和标头)添加到 apollo federation?

Posted

技术标签:

【中文标题】如何将 2 buildService(上传和标头)添加到 apollo federation?【英文标题】:How can I add 2 buildService (upload and header) to apollo federation? 【发布时间】:2022-01-22 08:30:57 【问题描述】:

在 apollo federation 中是否有任何选项可以同时添加标头和上传到 buildService? 我想要我的标头进行身份验证和上传以上传文件。 buildService 不支持返回对象。

const gateway = new ApolloGateway(
  buildService( name, url ) 
    return new RemoteGraphQLDataSource(
      url,
      willSendRequest( request, context :  request: any; context: any ) 
        request?.http?.headers?.set(
          "authorization",
          context.auth ? context.auth : ""
        );
        request?.http?.session?.set(
          "session",
          context.session ? context.session : ""
        );
        request?.http?.sessionStore?.set(
          "sessionStore",
          context.sessionStore ? context.sessionStore : ""
        );
      ,
    );
  ,
);

如何将upload file 也添加到我的 buildService?

【问题讨论】:

【参考方案1】:

找到解决方案,如果您扩展 FileUploadDataSource 以某种方式工作:

import FileUploadDataSource from "@profusion/apollo-federation-upload";

class AuthenticationAndUpload extends FileUploadDataSource 
  willSendRequest(
    request,
    context,
  : 
    request: GraphQLRequest;
    context: any;
  ) 
    request?.http?.headers?.set(
      "authorization",
      context.auth ? context.auth : ""
    );
  


const gateway = new ApolloGateway(
  buildService( url ) 
    return new AuthenticationAndUpload( url );
  ,
);

【讨论】:

以上是关于如何将 2 buildService(上传和标头)添加到 apollo federation?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 Content-Length 标头的情况下流式传输 HTTP 文件上传?

使用 Laravel 5.0 存储门面将元数据、标头(Expires、CacheControl)添加到上传到 Amazon S3 的文件中

我可以在没有内容长度标头的情况下将文件上传到 S3 吗?

如何在 Dropzone 上传请求的标头中包含 CSRF 令牌?

Codeigniter 和 RestServer。如何上传图片?

为啥使用 ia-wrapper 将后续项目上传到 archive.org 时仍然存在陈旧的标头值?