簡體   English   中英

在 .NetCore 中使用 GraphQL API 發送多部分/表單數據

[英]Sending multipart/form-data using GraphQL API in .NetCore

我正在嘗試使用 GraphQL API 將 .png/jpeg/.jpg 文件類型的用戶頭像從 angular 客戶端上傳到 .netCore 服務器應用程序。 我設法在來自客戶端的內容類型multipart/form-data的請求中發送要上傳的圖像。 但是從 API 服務器收到 400 錯誤,說不支持內容類型。

錯誤信息如下:

消息:“無效的‘Content-Type’標頭:不支持的媒體類型。必須是‘application/json’、‘application/graphql’或‘application/x-www-form-urlencoded’。見: http:// graphql.org/learn/serving-over-http/。”

我正在嘗試實現這樣的突變。

FieldAsync<StringGraphType>(
            "testImageUpload",
            arguments: new QueryArguments(
                new QueryArgument<StringGraphType> { Name = "testArg" },
                new QueryArgument<UploadGraphType> { Name = "file" }
                ),
            resolve: async context =>
            {
                var testArg = context.GetArgument<string>("testArg");
                var file = context.GetArgument<IFormFile>("file");

                try
                {
                    return await uploaderService().UploadImage(file);
                }
                catch (Exception e)
                {
                    context.Errors.Add(new ExecutionError("Something happened!"));
                    return context.Errors;
                }
            });

我使用GraphQL.netGraphQL.Upload.AspNetCore來支持多部分文件。

樣本變異將是這樣的:

mutation testImageUpload($testArg: String, $file: Upload) {
  fileUpload{
    testImageUpload(testArg: $testArg, file: $file)
  }
}

任何人都可以向我建議如何使 .NetCore webAPI 應用程序接受multipart/form-data 任何幫助將不勝感激。 提前致謝。

我也遇到了這個問題。答案就在您的Startup.cs<\/code>文件中。

首先,即使在使用 GraphQL.Upload 時也會出現“Invalid 'Content-Type' header”的原因是(在本回答時)GraphQL.net 中間件只檢查三個不同的 Content-Type 標頭和錯誤如果這些都不匹配,則退出。 見 GitHub<\/a>

至於解決方案,您尚未共享任何Startup.cs<\/code>文件,因此我不確定您的文件是什么樣的。我將分享我的相關部分。

您需要添加服務和中間件。

服務:

services.AddGraphQLUpload()
  .AddGraphQL((options, provider) =>
  {
  ...
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM