mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-02-04 22:33:30 +01:00
rpc: Allow named and positional arguments to be used together
It's nice to be able to use named options and positional arguments together.
Most shell tools accept both, and python functions combine options and
arguments allowing them to be passed with even more flexibility. This change
adds support for python's approach so as a motivating example:
bitcoin-cli -named createwallet wallet_name=mywallet load_on_startup=1
Can be shortened to:
bitcoin-cli -named createwallet mywallet load_on_startup=1
JSON-RPC standard doesn't have a convention for passing named and positional
parameters together, so this implementation makes one up and interprets any
unused "args" named parameter as a positional parameter array.
This commit is contained in:
@@ -5,6 +5,28 @@ The headless daemon `bitcoind` has the JSON-RPC API enabled by default, the GUI
|
||||
option. In the GUI it is possible to execute RPC methods in the Debug Console
|
||||
Dialog.
|
||||
|
||||
## Parameter passing
|
||||
|
||||
The JSON-RPC server supports both _by-position_ and _by-name_ [parameter
|
||||
structures](https://www.jsonrpc.org/specification#parameter_structures)
|
||||
described in the JSON-RPC specification. For extra convenience, to avoid the
|
||||
need to name every parameter value, all RPC methods accept a named parameter
|
||||
called `args`, which can be set to an array of initial positional values that
|
||||
are combined with named values.
|
||||
|
||||
Examples:
|
||||
|
||||
```sh
|
||||
# "params": ["mywallet", false, false, "", false, false, true]
|
||||
bitcoin-cli createwallet mywallet false false "" false false true
|
||||
|
||||
# "params": {"wallet_name": "mywallet", "load_on_startup": true}
|
||||
bitcoin-cli -named createwallet wallet_name=mywallet load_on_startup=true
|
||||
|
||||
# "params": {"args": ["mywallet"], "load_on_startup": true}
|
||||
bitcoin-cli -named createwallet mywallet load_on_startup=true
|
||||
```
|
||||
|
||||
## Versioning
|
||||
|
||||
The RPC interface might change from one major version of Bitcoin Core to the
|
||||
|
||||
Reference in New Issue
Block a user