LambdaServerlessRequest is an easy way to make requests to a Lambda serverless function instead of having to use API Gateway. LambdaServerlessRequest was heavily inspired by axios, and although there is not complete feature parity, and there are some interface changes, coming from axios to LambdaServerlessRequest will feel very natural.
$ npm i lambdaserverlessrequest
const serverlessRequest = require("lambdaserverlessrequest");
const request = serverlessRequest.create({
"lambda": new AWS.Lambda({"region": "us-west-2"})
});
try {
const result = await request({
"method": "get",
"functionName": "MyLambdaFunction1",
"url": "/api/books"
}));
console.log(result);
} catch (e) {
console.error(e);
}
try {
const result = await serverlessRequest({
"method": "post",
"functionName": "MyLambdaFunction1",
"url": "/api/books",
"data": {"id": 1, "title": "The best book ever"}
"lambda": new AWS.Lambda({"region": "us-west-2"})
}));
console.log(result);
} catch (e) {
console.error(e);
}
- lambdaServerlessRequest#request(config)
- lambdaServerlessRequest#get(url[, config])
- lambdaServerlessRequest#delete(url[, config])
- lambdaServerlessRequest#head(url[, config])
- lambdaServerlessRequest#options(url[, config])
- lambdaServerlessRequest#post(url[, data[, config]])
- lambdaServerlessRequest#put(url[, data[, config]])
- lambdaServerlessRequest#patch(url[, data[, config]])
- lambdaServerlessRequest#create(config)
{
// `url` is the server URL that will be used for the request
url: '/user',
// `method` is the request method to be used when making the request
method: 'get', // default
// `functionName` is the name of the Lambda function you wish to run for this request
functionName: 'MyLambdaFunction1',
// `headers` are custom headers to be sent
headers: {'X-Requested-With': 'XMLHttpRequest'},
// `params` are the URL parameters to be sent with the request
// Must be a plain object
params: {
ID: 12345
},
// `data` is the data to be sent as the request body
// Only applicable for request methods 'PUT', 'POST', and 'PATCH'
// Must be of one of the following types:
// - string, plain object
data: {
firstName: 'Steve'
},
// `responseType` indicates the type of data that the server will respond with
// options are: 'arraybuffer', 'json'
responseType: 'json', // default
// `validateStatus` defines whether to resolve or reject the promise for a given
// HTTP response status code. If `validateStatus` returns `true` (or is set to `null`
// or `undefined`), the promise will be resolved; otherwise, the promise will be
// rejected.
validateStatus: function (status) {
return status >= 200 && status < 300; // default
}
}
{
// `data` is the response that was provided by the server
data: {},
// `status` is the HTTP status code from the server response
status: 200,
// `headers` the headers that the server responded with
// All header names are lower cased
headers: {}
}
- Currently query parameters attached to the
url
won't be recognized - Browser not supported
- Requires Node.js version 8 or higher
- We have currently only tested using
async
/await
syntax, most functionality should work with promises, but this has not been tested at this point
getUri
all
spread
functionName
lambda
params
must be a plain object, URLSearchParams is not supportedbody
only accepts String or plain Object as typesresponseType
only accepts json and arraybuffer
baseURL
transformRequest
transformResponse
paramsSerializer
timeout
withCredentials
adapter
auth
responseEncoding
xsrfCookieName
xsrfHeaderName
onUploadProgress
onDownloadProgress
maxContentLength
maxRedirects
socketPath
httpAgent
httpsAgent
proxy
cancelToken
statusText
config
request