Document API ability to URL-decode resource names

All Consul HTTP API endpoints now URL-decode resource names specified in the
path, enabling resource names containing URL-invalid characters to be used
in HTTP API requests if URL-encoded into the path.

Functionality implemented in Github Pull Requests:
- #11335
- #11957
- #12103
- #12190
- #12297

Also documents CLI accepting URL-invalid resource names.

All Consul HTTP API endpoints now URL-decode resource names specified in the
path, enabling resource names containing URL-invalid characters to be used
in HTTP API requests if URL-encoded into the path. The Consul HTTP API always
supported URL-decoding of query parameters.

The CLI automatically URL-encodes arguments which are inserted as resource
names in the URL path, enabling the CLI to also interact with resource names
that contain URL-invalid characters.
This commit is contained in:
Jared Kirschner 2022-02-16 10:19:00 -08:00
parent cf12f8af20
commit a5354b50fb
2 changed files with 26 additions and 0 deletions

View File

@ -79,6 +79,26 @@ $ curl \
http://127.0.0.1:8500/v1/kv/foo http://127.0.0.1:8500/v1/kv/foo
``` ```
## URL-Encoded Resource Names
Some Consul HTTP API endpoints accept resource names in URL path or query parameters.
To pass a resource name containing URL-invalid characters, such as `/` or ` `,
URL-encode the resource name into the URL.
However, we generally recommend using resource names that don't require URL-encoding.
Depending on the validation that Consul applies to a resource name,
Consul may still reject a request if it considers the resource name invalid for that endpoint.
And even if Consul considers the resource name valid, it may degrade other functionality,
such as failed [DNS lookups](/docs/discovery/dns)
for nodes or services with names containing invalid DNS characters.
This HTTP API capability also allows the
[CLI to accept arguments with URL-invalid characters](/commands#arguments-with-url-invalid-characters).
### Invalid Characters
The linefeed character (`%0a`) will cause a request to be rejected even if it is URL-encoded.
## Translated Addresses ## Translated Addresses
Consul 0.7 added the ability to translate addresses in HTTP response based on Consul 0.7 added the ability to translate addresses in HTTP response based on

View File

@ -119,6 +119,12 @@ $ consul operator raft
list-peers remove-peer list-peers remove-peer
``` ```
## Arguments with URL-Invalid Characters
The CLI automatically URL-encodes arguments, which are then
[URL-decoded by the underlying HTTP API endpoints](/api-docs#url-encoded-resource-names).
To avoid double-encoding arguments, do not URL-encode arguments passed to the CLI.
## Environment Variables ## Environment Variables
In addition to CLI flags, Consul reads environment variables for behavior In addition to CLI flags, Consul reads environment variables for behavior