Once set up on the server, there are several ways to connect to the REST API of a Feathers service. Keep in mind that while clients connected via websockets will receive real-time events from other REST API calls, you can't get real-time updates over the HTTP API without resorting to polling.
You can communicate with a Feathers server using any HTTP REST client. The following section describes what HTTP method, body and query parameters belong to which service method call.
All query parameters in a URL will be set as params.query
on the server. Other service parameters can be set through hooks and Express middleware. URL query parameter values will always be strings. Conversion (e.g. the string 'true'
to boolean true
) can be done in a hook as well.
The body type for POST
, PUT
and PATCH
requests is determined by the Express body-parser middleware which has to be registered before any service. You should also make sure you are setting your Accepts
header to application/json
.
Retrieves a list of all matching resources from the service
GET /messages?status=read&user=10
Will call messages.find({ query: { status: 'read', user: '10' } })
on the server.
Retrieve a single resource from the service.
GET /messages/1
Will call messages.get(1, {})
on the server.
GET /messages/1?fetch=all
Will call messages.get(1, { query: { fetch: 'all' } })
on the server.
Create a new resource with data
which may also be an array.
POST /messages
{ "text": "I really have to iron" }
Will call messages.create({ "text": "I really have to iron" }, {})
on the server.
POST /messages
[
{ "text": "I really have to iron" },
{ "text": "Do laundry" }
]
Completely replace a single or multiple resources.
PUT /messages/2
{ "text": "I really have to do laundry" }
Will call messages.update(2, { "text": "I really have to do laundry" }, {})
on the server. When no id
is given by sending the request directly to the endpoint something like:
PUT /messages?complete=false
{ "complete": true }
Will call messages.update(null, { "complete": true }, { query: { complete: 'false' } })
on the server.
ProTip:
update
is normally expected to replace an entire resource which is why the database adapters only supportpatch
for multiple records.
Merge the existing data of a single or multiple resources with the new data
.
PATCH /messages/2
{ "read": true }
Will call messages.patch(2, { "read": true }, {})
on the server. When no id
is given by sending the request directly to the endpoint something like:
PATCH /messages?complete=false
{ "complete": true }
Will call messages.patch(null, { complete: true }, { query: { complete: 'false' } })
on the server to change the status for all read messages.
This is supported out of the box by the Feathers database adapters
Remove a single or multiple resources:
DELETE /messages/2?cascade=true
Will call messages.remove(2, { query: { cascade: 'true' } })
. When no id
is given by sending the request directly to the endpoint something like:
DELETE /messages?read=true
Will call messages.remove(null, { query: { read: 'true' } })
to delete all read messages.