Lab: Core HTTP API (30 minutes)
Bradley Holt, Developer Advocate
Thursday, February 9, 2017
CouchDB Developer Day
@BradleyHolt
HTTP API
Apache CouchDB is accessed through an HTTP API
@BradleyHolt
GET /
GET /db/docPOST /db
DELETE /db/doc
PUT /db/doc
PUT /db
http-console
$ npm install http-console -g
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
$ npm install http-console -g
$ http-console 127.0.0.1:5984
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
$ npm install http-console -g
$ http-console 127.0.0.1:5984
> http-console 0.6.3
> Welcome, enter .help if you're lost.
> Connecting to 127.0.0.1 on port 5984.
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
http://127.0.0.1:5984/>
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
http://127.0.0.1:5984/> GET /
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
http://127.0.0.1:5984/> GET /
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
{
couchdb: 'Welcome',
version: '9afa6a0',
vendor: { name: 'The Apache Software Foundation' }
}
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
http://127.0.0.1:5984/>
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
http://127.0.0.1:5984/> .q
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
$ http-console https://bradley-holt.cloudant.com
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
$ http-console https://bradley-holt.cloudant.com
> http-console 0.6.3
> Welcome, enter .help if you're lost.
> Connecting to bradley-holt.cloudant.com on port 443.
@BradleyHolthttps://github.com/cloudhead/http-console
Connecting to CouchDB 2.0
$ http-console root:passw0rd@127.0.0.1:5984 --json
@BradleyHolt
Connecting to CouchDB 2.0
$ http-console root:passw0rd@127.0.0.1:5984 --json
> http-console 0.6.3
> Welcome, enter .help if you're lost.
> Connecting to 127.0.0.1 on port 5984.
@BradleyHolt
Connecting to IBM Cloudant
$ http-console https://bradley-holt:passw0rd@bradley-holt.cloudant.com --json
@BradleyHolt
Connecting to IBM Cloudant
$ http-console https://bradley-holt:passw0rd@bradley-holt.cloudant.com --json
> http-console 0.6.3
> Welcome, enter .help if you're lost.
> Connecting to bradley-holt.cloudant.com on port 443.
@BradleyHolt
Request Headers
/>
@BradleyHolt
Request Headers
/> .headers
@BradleyHolt
Request Headers
/> .headers
Accept: application/json
Content-Type: application/json
Authorization: Basic cm9vdDorMi95N3Y2aA==
Host: 127.0.0.1
@BradleyHolt
PUT a Database
/>
@BradleyHolt
PUT a Database
/> PUT /kittens
@BradleyHolt
PUT a Database
/> PUT /kittens
...
@BradleyHolt
PUT a Database
/> PUT /kittens
...
HTTP/1.1 201 Created
Content-Type: application/json
Location: http://127.0.0.1/kittens
{ ok: true }
@BradleyHolt
PUT a Database Again
/>
@BradleyHolt
PUT a Database Again
/> PUT /kittens
@BradleyHolt
PUT a Database Again
/> PUT /kittens
...
@BradleyHolt
PUT a Database Again
/> PUT /kittens
...
HTTP/1.1 412 Precondition Failed
Content-Type: application/json
{ error: 'file_exists', reason: 'The database could not be created, the file already exists.' }
@BradleyHolt
Delete a Database
/>
@BradleyHolt
Delete a Database
/> DELETE /kittens
@BradleyHolt
Delete a Database
/> DELETE /kittens
HTTP/1.1 200 OK
Content-Type: application/json
{ ok: true }
@BradleyHolt
Try It On Your Own
1. Create database test_1
2. Delete database test_1
@BradleyHolt
Lab: Core HTTP API
CouchDB Developer Day
@BradleyHolt

CouchDB Day NYC 2017: Core HTTP API

Editor's Notes

  • #14 HTTP Basic authentication is a simple way to authenticate with an HTTP server Other approaches, such as cookies and OAuth, are often used as well