diff --git a/src/NSwag.CodeGeneration.TypeScript.Tests/AxiosTests.cs b/src/NSwag.CodeGeneration.TypeScript.Tests/AxiosTests.cs index 34c83bd37..f216db20c 100644 --- a/src/NSwag.CodeGeneration.TypeScript.Tests/AxiosTests.cs +++ b/src/NSwag.CodeGeneration.TypeScript.Tests/AxiosTests.cs @@ -223,5 +223,53 @@ public async Task When_abort_signal_and_generate_client_interfaces_contains_sign await VerifyHelper.Verify(code); TypeScriptCompiler.AssertCompile(code); } + + [Fact] + public async Task When_typestyle_is_interface_without_handlereferences_will_have_parse_trycatch() + { + //// Arrange + var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings()); + var document = await generator.GenerateForControllerAsync(); + + //// Act + var codeGen = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings + { + Template = TypeScriptTemplate.Axios, + PromiseType = PromiseType.Promise, + TypeScriptGeneratorSettings = + { + TypeStyle = NJsonSchema.CodeGeneration.TypeScript.TypeScriptTypeStyle.Interface, + HandleReferences = false + } + }); + var code = codeGen.GenerateFile(); + + //// Assert + Assert.Contains("try { result200 =", code); + } + + [Fact] + public async Task When_typestyle_is_interface_with_handlereferences_will_have_jsonParse() + { + //// Arrange + var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings()); + var document = await generator.GenerateForControllerAsync(); + + //// Act + var codeGen = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings + { + Template = TypeScriptTemplate.Axios, + PromiseType = PromiseType.Promise, + TypeScriptGeneratorSettings = + { + TypeStyle = NJsonSchema.CodeGeneration.TypeScript.TypeScriptTypeStyle.Interface, + HandleReferences = true + } + }); + var code = codeGen.GenerateFile(); + + //// Assert + Assert.Contains("jsonParse(", code); + } } } diff --git a/src/NSwag.CodeGeneration.TypeScript/Templates/Client.ProcessResponse.HandleStatusCode.liquid b/src/NSwag.CodeGeneration.TypeScript/Templates/Client.ProcessResponse.HandleStatusCode.liquid index 58e545ed6..544c0ffa8 100644 --- a/src/NSwag.CodeGeneration.TypeScript/Templates/Client.ProcessResponse.HandleStatusCode.liquid +++ b/src/NSwag.CodeGeneration.TypeScript/Templates/Client.ProcessResponse.HandleStatusCode.liquid @@ -44,7 +44,8 @@ let resultData{{ response.StatusCode }} = _responseText; {% if response.UseDtoClass -%} {{ response.DataConversionCode }} {% else -%} -result{{ response.StatusCode }} = {% unless response.IsPlainText %}JSON.parse({% endunless %}resultData{{ response.StatusCode }}{% unless response.IsPlainText %}){% endunless %}; +try { result{{ response.StatusCode }} = {% unless response.IsPlainText %}JSON.parse({% endunless %}resultData{{ response.StatusCode }}{% unless response.IsPlainText %}){% endunless %}; } +catch(err) { result{{ response.StatusCode }} = resultData{{ response.StatusCode }}; } {% endif -%} {% else -%} {% if response.UseDtoClass or response.IsDateOrDateTime -%}