ePages-de / restdocs-api-spec

Adds API specification support to Spring REST Docs
MIT License
388 stars 102 forks source link

ResourceSnippet does not support PayloadSubsectionExtractor #229

Open antoinelochet opened 1 year ago

antoinelochet commented 1 year ago

Hello,

When migrating from vanilla Spring REST Doc to this plugin, we encountered a problem with PayloadSubsectionExtractor. It is not used at all. Here is our exemple:

document("example",
        RequestDocumentation.pathParameters(
                DocumentationHelper.tokenIdPathParameterDescriptor()
        ),
        PayloadDocumentation.requestFields(
                DocumentationHelper.keyAttributesFieldDescriptor()
        ),
        PayloadDocumentation.relaxedResponseFields(
                PayloadDocumentation.beneathPath("[]"),
                DocumentationHelper.keyTypeFieldDescriptor(),
                DocumentationHelper.keyIdFieldDescriptor(),
                DocumentationHelper.keySizeFieldDescriptor("size"),
                DocumentationHelper.curveOIDFieldDescriptor().type(String.class).optional(),
                DocumentationHelper.publicKeyFieldDescriptor(),
                DocumentationHelper.privateKeyFieldDescriptor()
        ),
        PayloadDocumentation.responseFields(
                PayloadDocumentation.beneathPath("[].privateKey"),
                DocumentationHelper.keyUsagesFieldDescriptor(),
                DocumentationHelper.keyAttributesFieldDescriptor()
        ),
        PayloadDocumentation.responseFields(
                PayloadDocumentation.beneathPath("[].publicKey"),
                DocumentationHelper.rsaPublicKeyDetailsFieldDescriptors()
        )
)

The PayloadDocumentation.beneathPath("[]") is not used at all, which result in multiple errors with fields not found. We have seen in the documentation that it would be possible to use subsectionWithPath or fieldWithPath but since MockMvcRestDocumentationWrapper is described to be a drop-in replacement, we do not want to go this route.

philipowen commented 11 months ago

Hey @ozscheyge would you be able to review a PR to address this so that beneathPath() gets treated as expected?