Получить POST запрос тела в Moleculer
Я использую Fetch в ReactJs, чтобы отправить запрос api Moleculer следующим образом:
var data ={
'ordername' : 'PUG',
'receivername' : 'AnSama'
}
fetch(url,{
method: 'POST',
header: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body : data
})
.then(res => {return res.json()})
.then(
(result) => {
alert(JSON.stringify(result));
},
(error) => {
alert('error');
}
)
Затем я хочу получить тело запроса в Moleculer (Framework of NodeJS). Как я могу сделать?
3 ответа
В Moleculer API Gateway тело JSON всегда анализируется и доступно через ctx.params
, Если вы хотите отправить значения заголовка в службу, используйте onBeforeHook в настройках маршрутизатора.
broker.createService({
mixins: [ApiService],
settings: {
routes: [
{
path: "/",
onBeforeCall(ctx, route, req, res) {
// Set request headers to context meta
ctx.meta.userAgent = req.headers["user-agent"];
}
}
]
}
});
В дополнение к ответу @Icebob, если ваш POST API обрабатывает запрос асинхронно (скорее всего, так и будет) и возвращает обещание. Вот пример (это то, как мы используем):
actions : {
postAPI(ctx) {
return new this.Promise((resolve, reject) => {
svc.postdata(ctx, (err, res) => {
if (err) {
reject(err);
} else {
resolve(res);
}
});
})
.then((res) => {
return res;
}, (err) => {
return err;
});
}
}
У меня такой же вопрос. Как получить тело и заголовки в молекуле? При использовании require("молекулярный");
Я использую Fetch/Axios из ReactJS в Moleculer
axios({
url: url,
method: 'POST',
params: {
username: this.state.user['username'],
password: this.state.user['password'],
},
headers: ({
'Accept': 'application/json',
'Content-Type': 'application/json',
'API_KEY': API_KEY.API_KEY,
'CUSTOMER_KEY': API_KEY.CUSTOMER_KEY,
}),
withCredentials: true,
credentials: 'include',
}).then(res) => {})