Difference between revisions of "User:Saul/feathers"
m (→Client Authentication) |
(→Usage) |
||
Line 47: | Line 47: | ||
== Manipulating MongoDB Arrays == | == Manipulating MongoDB Arrays == | ||
https://docs.mongodb.com/manual/reference/operator/update-array/ | https://docs.mongodb.com/manual/reference/operator/update-array/ | ||
+ | |||
+ | == Curl == | ||
+ | Curl can be useful to test services as you create them. | ||
+ | === Create === | ||
+ | Create (POST /service) – creates a new document | ||
+ | <source lang="bash"> | ||
+ | curl "http://localhost:3030/service" \ | ||
+ | -H "Content-Type: application/json" \ | ||
+ | --data-binary "{ 'email': 'feathers@example.com', 'password': 'secret' }"; | ||
+ | </source> | ||
+ | === Authenticate === | ||
+ | Create (POST /authentication) – authenticates a user | ||
+ | <source lang="bash"> | ||
+ | curl "http://localhost:3030/authetication" \ | ||
+ | -H "Content-Type: application/json" \ | ||
+ | --data-binary "{ 'strategy': 'local', 'email': 'feathers@example.com', 'password': 'secret' }"; | ||
+ | </source> | ||
+ | === Find === | ||
+ | Find (GET /tasks) – finds all the documents matching the query (optional), also supports sorting and pagination | ||
+ | <source lang="bash"> | ||
+ | curl "http://localhost:3030/service" | ||
+ | </source> | ||
+ | <source lang="bash"> | ||
+ | curl "http://localhost:3030/service" \ | ||
+ | -GET | ||
+ | -H "Content-Type: application/json" \ | ||
+ | --data-binary '{ "someProperty": "someValue" }'; | ||
+ | </source> | ||
+ | |||
= Troubleshooting = | = Troubleshooting = | ||
== Client Authentication == | == Client Authentication == | ||
I had an issue where the client authenticated and I received the authentication token but when I use a service it says that I'm not authenticated.<br> | I had an issue where the client authenticated and I received the authentication token but when I use a service it says that I'm not authenticated.<br> | ||
The solution was to ensure that the client setup the transport before the authentication. | The solution was to ensure that the client setup the transport before the authentication. |
Revision as of 05:12, 13 August 2018
Feathers is a lightweight framework for setting up REST API's and realtime events.
Contents
Install
CLI
Install the cli to get started with you feathers application quickly.
npm install -g @feathersjs/cli
App
To get feathers to generate the app run:
feathers generate app
Authentication
To generate a authentication method use:
feathers generate authentication
Services
Services are a way to set up the REST API for a service like messages, users, channels, ect.
feathers generate service
Hooks
To generate a hook via the command line run:
feathers generate hook
Setup
TBC
Usage
Reverse Pagination
The best way that I have found to get the latest objects in the database is to use $sort like so:
app.service("messages").find({
query: {
$limit: 10,
$sort: {
createdAt: -1
}
}
}).then(res => {
const latestData = res.data.reverse();
};
Manipulating MongoDB Arrays
https://docs.mongodb.com/manual/reference/operator/update-array/
Curl
Curl can be useful to test services as you create them.
Create
Create (POST /service) – creates a new document
curl "http://localhost:3030/service" \
-H "Content-Type: application/json" \
--data-binary "{ 'email': 'feathers@example.com', 'password': 'secret' }";
Authenticate
Create (POST /authentication) – authenticates a user
curl "http://localhost:3030/authetication" \
-H "Content-Type: application/json" \
--data-binary "{ 'strategy': 'local', 'email': 'feathers@example.com', 'password': 'secret' }";
Find
Find (GET /tasks) – finds all the documents matching the query (optional), also supports sorting and pagination
curl "http://localhost:3030/service"
curl "http://localhost:3030/service" \
-GET
-H "Content-Type: application/json" \
--data-binary '{ "someProperty": "someValue" }';
Troubleshooting
Client Authentication
I had an issue where the client authenticated and I received the authentication token but when I use a service it says that I'm not authenticated.
The solution was to ensure that the client setup the transport before the authentication.