use error value for bad URI so custom error handler could treat it special #932
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.
When a custom
ProtoErrorHandlerFunc
is used, it is given an error withUnimplemented
gRPC code for cases where the server gets a request for an unrecognized URI path.When no such handler is in place, it defaults to a "404 Not Found" error, which is what basically any REST client actually expect for such an error.
Unfortunately, there is not currently any way to distinguish between "the server received an unrecognized URI path" and an actual "Unimplemented" error returned by a gRPC server handler. So it is not possible for a custom handler to turn those into "404 NotFound" errors, as a REST client would actually expect.
This change hoists the error out into an exported error value:
ErrUnknownURI
. That way, a custom error handler can check iferr == runtime.ErrUnknownURI
and choose to return a 404 for those errors (instead of "501 Not Implemented", which can be used for other errors with an "Unimplemented" gRPC code).