Use content-type aware deserialization for error responses#3754
Merged
joheredi merged 4 commits intoAzure:mainfrom Feb 12, 2026
Merged
Use content-type aware deserialization for error responses#3754joheredi merged 4 commits intoAzure:mainfrom
joheredi merged 4 commits intoAzure:mainfrom
Conversation
Member
|
Seems ok in principle. The code seems to be combined with the accept header PR work, could you separate it out? |
Member
|
Ah or I can just review commit by commit |
timovv
reviewed
Feb 12, 2026
Member
timovv
left a comment
There was a problem hiding this comment.
Could you add a test case? would be good to see what each of these cases actually look like
583a581 to
f745a12
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix: [Copilot PR] Use content-type aware deserialization for error responses
Problem
When an operation returns an XML error response (e.g., Azure Blob Storage's
StorageError), the generated deserialize function always used the JSON deserializer (storageErrorDeserializer(result.body)), ignoring the response's content type. This caused deserialization failures for services that return XML error bodies.Solution
Updated the error deserialization code generation in operationHelpers.ts to detect whether exception types support XML serialization and generate the appropriate deserializer:
storageErrorXmlDeserializer(result.body))isXmlContentTypeto select the correct deserializerExample generated output
Before:
After (dual-format):
Changes
xmlDeserializerandisXmlOnlyfields toExceptionThrowDetaildefaultXmlDeserializeranddefaultIsXmlOnlyfields toOperationExceptionDetailsgetExceptionDetailsto check exceptioncontentTypesand model XML serialization metadata, building XML deserializers when applicablegetExceptionDeserializeExprhelper to generate the correct deserialization expression based on format supportgetExceptionThrowStatementto emit content-type–aware deserialization for exceptions with XML support