kopia lustrzana https://github.com/longclawshop/longclaw
90 wiersze
3.1 KiB
ReStructuredText
90 wiersze
3.1 KiB
ReStructuredText
.. api:
|
|
|
|
Using the API client
|
|
=====================
|
|
|
|
Longclaw comes with a handy API javascript client to simplify making HTTP requests.
|
|
|
|
To load the client into your HTML templates, you can use the template tags:
|
|
|
|
.. code-block:: django
|
|
|
|
{% load longclawcore_tags %}
|
|
|
|
{% longclaw_vendors_bundle %}
|
|
{% longclaw_client_bundle %}
|
|
|
|
This will render the ``<script>`` tags necessary to load the javascript. The api client
|
|
will be available as a global object called ``longclawclient``.
|
|
You can access the methods by calling the request name (e.g. ``basketList``) and the desired method::
|
|
|
|
longclawclient.basketList.get({ ... })
|
|
longclawclient.basketList.post({ ... })
|
|
|
|
API Reference
|
|
-------------
|
|
|
|
:orderDetail:
|
|
supports GET methods. Requires an ``id`` url parameter
|
|
``longclawclient.orderDetail.get({ urlParams: { id: ... } })``
|
|
:fulfillOrder:
|
|
supports POST methods. Requires an ``id`` url param.
|
|
``longclawclient.fulfillOrder.post({ urlParams: { id: ... } })``
|
|
:checkout:
|
|
supports POST method. requires JSON data.
|
|
``longclawclient.checkout.post({ data: { ... } })``
|
|
:checkoutToken:
|
|
supports GET method.
|
|
:basketList:
|
|
supports GET and POST methods
|
|
:basketListCount:
|
|
supports GET methods
|
|
:basketDetailCount:
|
|
supports GET method. Requires ``id`` url param.
|
|
:basketDetail:
|
|
supports DEL method. Requires ``id`` url param.
|
|
:shippingCost:
|
|
supports GET method. requires ``country_code`` query param
|
|
``longclawclient.shippingCost.get({ queryParams: { country_code: 'gb' } })``
|
|
:shippingCountries:
|
|
supports GET method
|
|
:addressList:
|
|
supports GET and POST methods
|
|
:addressDetail:
|
|
supports GET, PUT, DEL methods
|
|
|
|
All methods take a ``config`` object of options which can optionally contain:
|
|
|
|
:config.url: - Completely override the URL to use
|
|
:config.prefix: - Use a different prefix or host for calling the endpoint.
|
|
:config.urlParams: - replacement parameters for the endpoint.
|
|
for example, if the endpoint is specified as `booking/{id}/`, urlParams should
|
|
be an object containing an `id` key and the string to replace it with, e.g:
|
|
{ id: '123' } would result in the endpoint being modified to `booking/123/`
|
|
|
|
:config.queryParams: - An object containing key-value pairs which
|
|
will be mapped to a query string. E.g.
|
|
{
|
|
first_name: 'John',
|
|
last_name: 'Smith'
|
|
}
|
|
would result in the endpoint being modified to `booking/123/?first_name=John&last_name=Smith`
|
|
|
|
:config.data: - Data object to send with the POST/PUT request. Will be converted to JSON.
|
|
|
|
It is important to note the ``config.prefix`` option. You will almost always need to specify this
|
|
to match the ``API_URL_PREFIX`` setting in your django settings. This can be done by including it in
|
|
your template view as e.g. a data attribute on a element and then accessing it through the ``dataset``
|
|
attribute in javascript, e.g.::
|
|
|
|
document.getElementById('my-element').dataset.apiUrlPrefix
|
|
|
|
Usage with ES6 modules
|
|
----------------------
|
|
To use the client with other ES6+ modules, install the client library from npm::
|
|
|
|
npm i longclawclient --save
|
|
|
|
Then import the api library::
|
|
|
|
import api from 'longclawclient' |