From d6bb392be88552510e5e9226d8a7f31b3ecfeb86 Mon Sep 17 00:00:00 2001 From: Richard Webb Date: Mon, 9 Feb 2026 19:57:32 +0000 Subject: [PATCH 1/2] Set the "Accept" request header to the specified type, rathern than always ApplicationJson --- src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs b/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs index f7dfa8f..4fc643a 100644 --- a/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs +++ b/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs @@ -252,7 +252,7 @@ type OperationCompiler(schema: OpenApiDocument, defCompiler: DefinitionCompiler, [ if not(isNull payloadMime) then "Content-Type", payloadMime if not(isNull retMime) then - "Accept", MediaTypes.ApplicationJson ] + "Accept", retMime ] @> // Locates parameters matching the arguments From b592a0b3cbf049e1256e390d63d0bfe48ec9a1fc Mon Sep 17 00:00:00 2001 From: Richard Webb Date: Sun, 15 Feb 2026 12:22:55 +0000 Subject: [PATCH 2/2] Add additional unit tests for checking for the expected Accept header --- ...Swashbuckle.ReturnTextControllers.Tests.fs | 9 +++++++ .../Controllers/ReturnTextControllers.fs | 26 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/tests/SwaggerProvider.ProviderTests/v3/Swashbuckle.ReturnTextControllers.Tests.fs b/tests/SwaggerProvider.ProviderTests/v3/Swashbuckle.ReturnTextControllers.Tests.fs index 19c6498..1d0a06a 100644 --- a/tests/SwaggerProvider.ProviderTests/v3/Swashbuckle.ReturnTextControllers.Tests.fs +++ b/tests/SwaggerProvider.ProviderTests/v3/Swashbuckle.ReturnTextControllers.Tests.fs @@ -19,3 +19,12 @@ let ``Return text/csv GET Test``() = [] let ``Send & return text/plain POST Test``() = api.PostApiConsumesText("hello") |> asyncEqual "hello" + +// Test for https://github.com/fsprojects/SwaggerProvider/pull/290 to check for expected 'Accept' header values +[] +let ``Return text/plain Accept header Test``() = + api.GetApiCheckAcceptsPlain() |> asyncEqual "Hello world" + +[] +let ``Return text/csv Accept header Test``() = + api.GetApiCheckAcceptsCsv() |> asyncEqual "Hello,world" diff --git a/tests/Swashbuckle.WebApi.Server/Controllers/ReturnTextControllers.fs b/tests/Swashbuckle.WebApi.Server/Controllers/ReturnTextControllers.fs index 494a069..eb96c79 100644 --- a/tests/Swashbuckle.WebApi.Server/Controllers/ReturnTextControllers.fs +++ b/tests/Swashbuckle.WebApi.Server/Controllers/ReturnTextControllers.fs @@ -21,6 +21,32 @@ type ReturnCsvController() = member this.Get() = "Hello,world" |> ActionResult +// CheckAcceptsPlainController and CheckAcceptsCsvController are tests for https://github.com/fsprojects/SwaggerProvider/pull/290 +// to test that the generated 'Accept' headers contain the expected values +[] +[] +type CheckAcceptsPlainController() = + inherit ControllerBase() + + [] + member this.Get() = + if this.Request.Headers.Accept.Equals("text/plain") then + "Hello world" |> ActionResult + else + ActionResult(UnsupportedMediaTypeResult()) + +[] +[] +type CheckAcceptsCsvController() = + inherit ControllerBase() + + [] + member this.Get() = + if this.Request.Headers.Accept.Equals("text/csv") then + "Hello,world" |> ActionResult + else + ActionResult(UnsupportedMediaTypeResult()) + [] [] type ConsumesTextController() =