More work towards client documentation

This commit is contained in:
Tom Christie 2016-06-30 11:46:40 +01:00
parent bdbcb3341b
commit 7236af32f8

View File

@ -56,10 +56,13 @@ To install the Core API command line client, use pip.
pip install coreapi pip install coreapi
**TODO** To start inspecting and interacting with an API the schema must be loaded.
coreapi get http://api.example.org/ coreapi get http://api.example.org/
This will then load the schema, displaying the resulting `Document`. This
`Document` includes all the available interactions that may be made against the API.
To interact with the API, use the `action` command. This command requires a list To interact with the API, use the `action` command. This command requires a list
of keys that are used to index into the link. of keys that are used to index into the link.
@ -130,21 +133,20 @@ For more information and a listing of the available subcommands use
## Other commands ## Other commands
**TODO** To display the current `Document`:
To display the current `Document`, use the `show` command.
coreapi show coreapi show
To reload the current `Document` from the network, use `reload`. To reload the current `Document` from the network:
coreapi reload coreapi reload
To load a schema file from disk. To load a schema file from disk:
load coreapi load my-api-schema.json --format corejson
To remove the current document, history, credentials, headers and bookmarks, use `clear`: To remove the current document, along with all currently saved history,
credentials, headers and bookmarks:
coreapi clear coreapi clear
@ -157,12 +159,75 @@ API that exposes a supported schema format.
## Getting started ## Getting started
client = coreapi.Client() You'll need to install the `coreapi` package using `pip` before you can get
schema = client.get('http://...') started. Once you've done so, open up a python terminal.
client.action(schema, ['users', 'list']) In order to start working with an API, we first need a `Client` instance. The
client.action(schema, ['users', 'list'], params={"page": 2}) client holds any configuration around which codecs and transports are supported
when interacting with an API, which allows you to provide for more advanced
kinds of behaviour.
import coreapi
client = coreapi.Client()
Once we have a `Client` instance, we can fetch an API schema from the network.
schema = client.get('https://api.example.org/')
The object returned from this call will be a `Document` instance, which is
the internal representation of the interface that we are interacting with.
Now that we have our schema `Document`, we can now start to interact with the API:
users = client.action(schema, ['users', 'list'])
Some endpoints may include named parameters, which might be either optional or required:
new_user = client.action(schema, ['users', 'create'], params={"username": "max"})
**TODO**: *file uploads*, *describe/help?*
## Codecs ## Codecs
Codecs are responsible for encoding or decoding Documents.
The decoding process is used by a client to take a bytestring of an API schema
definition, and returning the Core API `Document` that represents that interface.
A codec should be associated with a particular media type, such as **TODO**.
This media type is used by the server in the response `Content-Type` header,
in order to indicate what kind of data is being returned in the response.
#### Configuring codecs
**TODO**
#### Loading and saving schemas
You can use a codec directly, in order to load an existing schema definition,
and return the resulting `Document`.
schema_definition = open('my-api-schema.json', 'r').read()
codec = codecs.CoreJSONCodec()
schema = codec.load(schema_definition)
You can also use a codec directly to generate a schema definition given a `Document` instance:
schema_definition = codec.dump(schema)
output_file = open('my-api-schema.json', 'r')
output_file.write(schema_definition)
#### Writing custom codecs
## Transports ## Transports
**TODO**
#### Configuring transports
**TODO**
#### Writing custom transports
**TODO**