Sphinx directive for RESTful HTTP API examples
sphinxcontrib-httpexample enhances sphinxcontrib-httpdomain, a Sphinx domain extension for describing RESTful HTTP APIs in detail, with a simple call example directive. The new directive provided by this extension generates RESTful HTTP API call examples for different tools from a single HTTP request example.
The audience for this extension are developers and technical writes documenting their RESTful HTTP APIs. This extension has originally been developed for documenting plone.restapi.
Configuration:
The URL scheme, either
httporhttps, used in the generated examples can be configured with thehttpexample_schemeconfiguration variable. It defaults tohttp.# conf.py httpexample_scheme = 'https'
Syntax:
.. http:example:: space separated list of tools :request: ../optional/rel/path/to/plaintext/request :response: ../optional/rel/path/to/plaintext/response Raw plaintext HTTP request example, which is required only when :request: is not specified.
Example:
.. http:example:: curl wget httpie python-requests GET /Plone/front-page HTTP/1.1 Host: localhost:8080 Accept: application/json Authorization: Basic YWRtaW46YWRtaW4=
Rendering:
http
GET /plone/folder/my-document?expand=breadcrumbs%2Cnavigation HTTP/1.1 Host: localhost:8080 Accept: application/json Authorization: Basic YWRtaW46c2VjcmV0
curl
curl -i -X GET 'http://localhost:8080/plone/folder/my-document?expand=breadcrumbs%2Cnavigation' -H "Accept: application/json" --user admin:secret
wget
wget -S -O- 'http://localhost:8080/plone/folder/my-document?expand=breadcrumbs%2Cnavigation' --header="Accept: application/json" --auth-no-challenge --user=admin --password=secret
httpie
http 'http://localhost:8080/plone/folder/my-document?expand=breadcrumbs%2Cnavigation' Accept:application/json -a admin:secret
python-requests
requests.get('http://localhost:8080/plone/folder/my-document?expand=breadcrumbs%2Cnavigation', headers={'Accept': 'application/json'}, auth=('admin', 'secret'))
import PloneClient from '@plone/client';
const cli = PloneClient.initialize({apiPath: 'http://nohost/plone'});
const { data, status } = cli.getContent({path: '/plone/folder/my-document', expanders: ['breadcrumbs', 'navigation']})
Compatible with other tab libraries:
GET /Plone/front-page HTTP/1.1 Host: localhost:8080 Accept: application/json Authorization: Basic YWRtaW46YWRtaW4=
curl -i -X GET http://localhost:8080/Plone/front-page -H "Accept: application/json" --user admin:admin
wget -S -O- http://localhost:8080/Plone/front-page --header="Accept: application/json" --auth-no-challenge --user=admin --password=admin
http http://localhost:8080/Plone/front-page Accept:application/json -a admin:admin
wget -S -O- http://localhost:8080/Plone/front-page --header="Accept: application/json" --auth-no-challenge --user=admin --password=admin
HTTP/1.1 200 OK Content-Type: application/json { "@id": "http://localhost:8080/Plone/front-page", "@type": "Document", "UID": "1f699ffa110e45afb1ba502f75f7ec33", "allow_discussion": null, "changeNote": "", "contributors": [], "created": "2016-01-21T01:14:48+00:00", "creators": [ "test_user_1_", "admin" ], "description": "Congratulations! You have successfully installed Plone.", "effective": null, "exclude_from_nav": false, "expires": null, "id": "front-page", "language": "", "modified": "2016-01-21T01:24:11+00:00", "parent": { "@id": "http://localhost:8080/Plone", "@type": "Plone Site", "description": "", "title": "Plone site" }, "relatedItems": [], "review_state": "private", "rights": "", "subjects": [], "table_of_contents": null, "text": { "content-type": "text/plain", "data": "If you're seeing this instead of the web site you were expecting, the owner of this web site has just installed Plone. Do not contact the Plone Team or the Plone mailing lists about this.", "encoding": "utf-8" }, "title": "Welcome to Plone" }
GET /Plone/front-page HTTP/1.1 Host: localhost:8080 Accept: application/json Authorization: Basic YWRtaW46YWRtaW4=
curl -i -X GET http://localhost:8080/Plone/front-page -H "Accept: application/json" --user admin:admin
wget -S -O- http://localhost:8080/Plone/front-page --header="Accept: application/json" --auth-no-challenge --user=admin --password=admin
http http://localhost:8080/Plone/front-page Accept:application/json -a admin:admin
wget -S -O- http://localhost:8080/Plone/front-page --header="Accept: application/json" --auth-no-challenge --user=admin --password=admin
HTTP/1.1 200 OK Content-Type: application/json { "@id": "http://localhost:8080/Plone/front-page", "@type": "Document", "UID": "1f699ffa110e45afb1ba502f75f7ec33", "allow_discussion": null, "changeNote": "", "contributors": [], "created": "2016-01-21T01:14:48+00:00", "creators": [ "test_user_1_", "admin" ], "description": "Congratulations! You have successfully installed Plone.", "effective": null, "exclude_from_nav": false, "expires": null, "id": "front-page", "language": "", "modified": "2016-01-21T01:24:11+00:00", "parent": { "@id": "http://localhost:8080/Plone", "@type": "Plone Site", "description": "", "title": "Plone site" }, "relatedItems": [], "review_state": "private", "rights": "", "subjects": [], "table_of_contents": null, "text": { "content-type": "text/plain", "data": "If you're seeing this instead of the web site you were expecting, the owner of this web site has just installed Plone. Do not contact the Plone Team or the Plone mailing lists about this.", "encoding": "utf-8" }, "title": "Welcome to Plone" }
Supported tools: