Requête post sur serveur HEROKU
Bonsoir à tous :)
Je galère trop, voici le code synthétisé du problème et un petit bilan pour les âmes charitables qui voudra m'aider ;)
J'ai une API qui renvoie un utilisateur via requête post, j'appele cette API via une WEB APP.
En local , c'est parfait, en ligne mon code renvoie parfois une erreur 403 puis ensuite il retourne la valeur voulue ...
Config Database : Mongo Db, Hébergeur : Cloud Mongodb
Config de l'API : Framework : Express, ORM : Mongoose, Hébergeur : Heroku
Config de le WEB APP : React, Hébergeur : Firebase
Je pense que c'est lié aux promesses, mais après de nombreux essais je ne comprends toujours pas pourquoi le comportement est si aléatoire.
Nouveau sur NodeJs je veux bien un petit coup de pouce pour retrouver mon chemin.
Essais après de nombreuses recherche tout en bas du post ...
Voici en gros mon code :
//server\router.js
Code:
1 2 3 4 5 6 7 8 9 10 11
| const express = require('express')
const UserV1Ctrl = require('./users_v1/user_ctrl')
//Init router
const router = express.Router()
//Call
router.post('/v1/user/get/private/:id', UserV1Ctrl.getPrivate)
//Export
module.exports = router |
//server\users_v1\user_ctrl.js
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| exports.getPrivate = async (req, res) => {
const body = req.body
//Action
await UserModel.findOne({ _id: req.params.id },
(err, user) => {
if (err) {
return res.status(404).json({ message: "User not founded" })
}
return res.status(200).json({ message: "User datas loaded", data: user })
}).catch(err => {
console.error(err)
return res.status(500).json({ message: "User collection crashed" })
})
} |
//web\src\services\api.service.js
Code:
1 2 3 4 5 6
| import axios from 'axios'
const api = axios.create({
baseURL: config.api.databaseUrl,
})
export const userGetPrivate = (id, datas) => api.post(`/api/v1/user/get/private/${id}`, datas) |
//web\src\index.js
Code:
1 2 3 4 5 6 7 8 9 10
| import api from './services/api.service'
api.userGetPrivate(userSession._id, datas).then(
(success) => {
console.log(success)
},
(error) => {
console.error(error)
}
) |
Essais
//web\src\services\api.service.js
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| export function userGetPrivate(id, datas) {
return new Promise((resolve, reject) => {
api.post(`/api/v1/user/get/private/${id}`, datas).then(
(success) => {
if (success.data.data._id) {
resolve(success)
} else {
reject()
}
},
(error) => {
reject()
},
)
})
} |
//web\src\index.js
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| new Promise((resolve, reject) => {
api.userGetPrivate(userSession._id, datas).then(
(success) => {
console.log(success)
resolve()
},
(error) => {
console.error(error)
reject()
}
)
}) |