When my angular frontend sends post
request
order(market: string, price: string, side: string, size: string): Observable<any> {
var payload = { market: market, order: { price: price, side: side, size: size } };
return this.http.post<any>('http://localhost:3000' + "/orders", payload))
.pipe(
tap((res: any) => {
console.log(res);
}),
retry(3), // retry a failed request up to 3 times
catchError(this.handleError) // then handle the error
);
}
my nodejs server receives it
app.post('/orders', (req, res) => {
console.log(req.body)
// more code
setTimeout(function () {
axios.post('https://test.com/api/orders', payload, { headers: headers })
.then((response) => {
if (response.status === 201) {
res.sendStatus(201);
} else {
res.sendStatus(400);
}
})
}, 500);
});
I added setTimeout
because without it I'm getting Error: Request failed with status code 400
.
As a result, I can post an order to test.com/api/orders
, but getting promise rejection.
(node:9220) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag
--unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2) (node:9220) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Any enhancement i can make here?
axios.post().then()
has no.catch()
. You aren't catching all possible errors there. – jfriend00