Ok, so what IS Lambdog? Lambdog is a set of packages (one for the client, and one for the server) that makes it easy to call and write Lambda functions for use on Netlify. You can use either one independently, or use them together.
@lambdog/client
@lambdog/client ealilly connects your front-end app with your back-end Netlify function.
No need to worry about fetch
or JSON encoding/decoding.
Installation
$ npm i @lambdog/client
or
$ yarn add @lambdog/client
Usage
Here is a basic setup.
import lambdog from '@lambdog/client';
const hello = (name) => lambdog('hello', { params { name }});
// Then to use it
const text = await hello('World');
console.log(text); // "Hello World"
// or
hello('World').then(text => console.log(text));
To pass data, specify the method
and the data
. Lambdog will automatically JSON stringify the data on the way out and parse on the way back.
const addToto = (data) =>
lambdog('todo-add', {
method: 'POST',
data,
});
or use the convenience function lambdog.post(name, data, options)
.
const addToto = (data) => lambdog.post('todo-add', data);
Then to update a todo on the server.
const id = await addToto({ text: 'buy milk', completed: false });
Parameters
Here are the parameters that you can use.
Parameter | Description |
---|---|
functionName |
A string containing the Netlify function to call. See below for passed parameters. |
options |
An optional configuration object. |
Return
lambdog
returns a promise that resolves to the output from your
Netlify function.
Convenience functions
Lambdog provides the following convenience functions.
- lambdog.request(options)
- lambdog.get(name[, options])
- lambdog.delete(name[, options])
- lambdog.head(name[, options])
- lambdog.post(name[, data[, options]])
- lambdog.put(name[, data[, options]])
- lambdog.patch(name[, data[, options]])
Configuration object
The configuration object has the following options.
A string used for URL pattern matching. For example, if you want the URL /.netlify/functions/hello/World
to call your hello
function and pass "World" as the name
prop, set pathToProps
to ":name"
Parameter | Description |
---|---|
params |
An object that will be converted to search params or replaces in the path. If you call with fn('hello', {params: {foo: 'bar'}}) the the URL will be /.netlify/functions/hello?name=World . If you call with fn('hello/:name', {params: {foo: 'bar'}}) the the URL will be /.netlify/functions/hello/World
|
headers |
An optional object with key/values to use in the HTTP header. Defaults to {'content-type': 'application/json'} for calls that include data. |
data |
Any data that you would like serialized in the HTTP body. By default, this will be JSON.stringify ed. |
License
MIT Licensed