CodeGenieApp / CodeGenieApp/serverless-express
Incorrect Data (empty body) returned through req: lambda + API gateway
- Langage dominant
- JavaScript
- Étoiles
- 5.3k
- Forks
- 676
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
### app.post("/path/path", (req, res) => { }
I am not sure what exactly is the issue is, but it seems that my **req** variable contains weird data from aws- api gateway. When I try log the contents I get a circular error. The data exists in the event variable with the following code in my index .js:
```
const awsServerlessExpress = require('aws-serverless-express');
const app = require('./app');
const server = awsServerlessExpress.createServer(app);
exports.handler = (event, context) => {
console.log(`EVENT: ${JSON.stringify(event)}`);
return awsServerlessExpress.proxy(server, event, context, 'PROMISE').promise;
};
```
Then in my app.js i have the following code:
``` // app modules
var express = require("express");
var bodyParser = require("body-parser");
var awsServerlessExpressMiddleware = require("aws-serverless-express/middleware");
// declare a new express app
var app = express();
app.use(bodyParser.json());
app.use(awsServerlessExpressMiddleware.eventContext());
// Enable CORS for all methods
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "*");
next();
});
app.post("/NotifyUrl-crprod/payfast", (req, res) => {
console.log("body" + Object.keys(req), Object.values(req));
console.log("body1" + req);
})
```
The req parameter contains stuff except the data that was actually sent through from api gateway, i.e. the data (body) doesn't exist in the **req**, even though it exists in **event** . The screenshots below are printouts of the keys and values that are printed out and the event variable data . These keys are not the issue, the issue is that the desired data doesn't appear at all **req.body** is empty. logging out the **req** will through a circular reference error which is okay, but the desired data is not present.
These are the different dependency version being used:
```
"aws-serverless-express": "^3.4.0",
"body-parser": "^1.17.1",
"express": "^4.15.2",
```
The below event printout screenshot is only a fraction of the full data that is contained in req.


Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par index.js et app.js, puis comparez l’événement API Gateway journalisé avec les données exposées au handler Express sur /NotifyUrl-crprod/payfast. Reproduisez la requête POST et vérifiez si req.body contient le payload soumis ; c’est terminé lorsque le corps de la requête est disponible dans le handler ou que la limite d’intégration à l’origine de son absence est identifiée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- aws, express, javascript, node.js
- Domaine
- api, backend, cloud
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 30/100