mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-08 06:14:47 +03:00
More work towards client documentation
This commit is contained in:
parent
bdbcb3341b
commit
7236af32f8
|
@ -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**
|
||||||
|
|
Loading…
Reference in New Issue
Block a user