api-platform / admin

A beautiful and fully-featured administration interface builder for hypermedia APIs
https://api-platform.com/docs/admin/
MIT License
477 stars 131 forks source link

violationKey in getSubmissionErrors is undefined / validation results in generic "Server communication error" #548

Closed herndlm closed 2 months ago

herndlm commented 2 months ago

API Platform version(s) affected: 3.2.20

@api-platform/admin@3.4.6 @api-platform/api-doc-parser@0.16.4

Description

API validation errors result in generic "Server communication error" in react-admin

How to reproduce

Possible Solution

Additional Context

Interestingly it seems to be still working with @api-platform/admin@3.4.5. What confuses me is that 3.4.6 claims to fix issues like these.

API response: content-type: application/problem+json; charset=utf-8 body:

{
  "@id": "\\/validation_errors\\/6b3befbc-2f01-4ddf-be21-b57898905284",
  "@type": "ConstraintViolationList",
  "status": 422,
  "violations": [
    {
      "propertyPath": "entitlements",
      "message": "At least one product must be selected if policy is \\u0022restricted\\u0022.",
      "code": "6b3befbc-2f01-4ddf-be21-b57898905284"
    }
  ],
  "detail": "entitlements: At least one product must be selected if policy is \\u0022restricted\\u0022.",
  "hydra:title": "An error occurred",
  "hydra:description": "entitlements: At least one product must be selected if policy is \\u0022restricted\\u0022.",
  "type": "\\/validation_errors\\/6b3befbc-2f01-4ddf-be21-b57898905284",
  "title": "An error occurred"
}

react-admin UI behaviour image

Step debugging with 3.4.5 where it works image

Step debugging with 3.4.6 where it doesn't work image

There seems to be something going on with the protocol/domain/port part in props or their values. I wonder if I misconfigured something, somewhere. Not sure, if related, but API platform's rfc_7807_compliant_errors is true and changing this doesn't change anything apparently.

Is this in any way useful, maybe to give me further tips at least how to debug? I can't create a simple producer at the moment unfortunately.

PawelSuwinski commented 2 months ago

Try to debug more where hydra response is expanded, I guess it works with api-platform/core 3.1.x but not with 3.2.x (?, not verified):

https://github.com/api-platform/admin/blob/5f80c05577413af5037baaf4a9619785780912a4/src/hydra/fetchHydra.ts#L58-L62

papppeter commented 2 months ago

3.4.5 works for me as expected with api platform 3.2, 3.3.2 tested.

@ type, @ id gets the extra prefix as @herndlm pictures shows

server response looks correct: image

getDocumentationUrlFromHeaders(headers) gives back full url to /api/docs.jsonld

@PawelSuwinski do you have any other suggestion?

another hint maybe less usefull it does not step into the documentLoader

my question is, which one is the correct format?

herndlm commented 2 months ago

I unfortunately didn't find more time to further debug it yet :/ but looks like you found the issue and fix already @PawelSuwinski. thx!

PawelSuwinski commented 2 months ago

@herndlm and @papppeter thanks for test cases and for debugging.