41
RFC 9457: Problem Details for HTTP APIs
(www.rfc-editor.org)
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Follow the wormhole through a path of communities !webdev@programming.dev
I quickly skimmed this, and it looks kinda overwrought to me.
This is the format I’ve been using:
Your format looks half baked and not thought all he way through. Take for instance the
success
bool. What info does this add thaterror_code
and the request's own status code doesn't already send? And what's the point ofcontext
if it is both unspecified and optional?If both success and error responses include the
success
field, then that can be a common discriminator between bodies of successful responses and bodies of error responses. Where this adds value beyond the request's status code, I'm not sure. Maybe it's useful in aggregated responses where partial successes are allowed (likePOST
ing a batch of objects)?This does seem a bit heavily worded. There's likely a reason they originally chose and continue to use that format, and it could be as simple as "all our other APIs use this format" or similar. There's more to choosing a response schema than what is theoretically the most efficient way of communicating the information.
Thanks, and you are basically correct on both counts:
At this point, it's an experiment.
Status codes for batch operations is always a mess. Do you return a 400 because one request made no sense even if the rest succeeded, or return a 200? 207 exists but it's not really directly part of the HTTP spec and only seems to support XML response bodies.
Edit: @lysdexic@programming.dev if the RFC proposed a solution to responses for batch operations where some responses may contain errors, then that would be interesting. The RFC, from what I understand, proposes a format for error responses, but does not seem to support mixed error/success responses.