[ad_1]
親愛なるコミュニティへ
リクエストの「Accept-Header」フィールドで定義できる形式で画像を返す Web API エンドポイントを作成しようとしています。 Swashbuckle NugGet パッケージ (Swashbuckle.AspNetCore、バージョン 6.5.0) を使用していますが、UI にパラメーターが正しく表示されます。 スワッシュバックル スクリーンショット.
そこにも見られるように、 カール パラメータ -H ‘accept: text/plain’ は間違っています。’image/jpeg’ にする必要があります。
openAPI 定義は、
C#
IOperationFilter
これは、特定のタイプの Action パラメーターを削除し、代わりに Header パラメーターを挿入します (以下のコードを参照)。
私は自分が間違っていることに接着剤がありません…
ヒント、アドバイス、そしておそらく解決策をありがとう!
アルネ
私が試したこと:
C#
using Microsoft.OpenApi.Any; using Microsoft.OpenApi.Models; using PEAM.API.Model; using Swashbuckle.AspNetCore.SwaggerGen; namespace PEAM.API.Middleware.Filter.OpenAPI { public sealed class EaImageFormatFilter : IOperationFilter { private const string PngMimeType = "image/png"; private const string JpgMimeType = "image/jpeg"; private const string BmpMimeType = "image/bmp"; private const string OpenApiStringType = "string"; private const string AcceptHeader = "Accept"; private IList<IOpenApiAny> AcceptedImageTypes { get; } public EaImageFormatFilter() { AcceptedImageTypes = new List<IOpenApiAny>() { new OpenApiString(PngMimeType), new OpenApiString(JpgMimeType), new OpenApiString(BmpMimeType) }; } public void Apply(OpenApiOperation operation, OperationFilterContext context) { var parameterType = typeof(EaImageFormat); var parameterToRemove = context.ApiDescription.ParameterDescriptions .Where(parameter => parameter.Type.Equals(parameterType)) .Select(parameter => parameter.Name) .ToHashSet(); if (parameterToRemove.Any()) { //--- parameter that are NOT of type EaImageFormat var keepParameter = (OpenApiParameter p) => !parameterToRemove.Contains(p.Name); //--- remove all parameters of type EaImageFormat operation.Parameters = operation.Parameters .Where(keepParameter) .ToList(); //--- add new parameter 'Accept' with location 'Header' var parameter = new OpenApiParameter { In = ParameterLocation.Header, Name = AcceptHeader, Description = "Pass accepted image format, e.g.: image/png, image/jpeg", Required = false, Schema = new OpenApiSchema { Type = OpenApiStringType, Default = new OpenApiString(PngMimeType), Enum = AcceptedImageTypes }, }; operation.Parameters.Add(parameter); } } } }
[ad_2]
コメント