У меня есть простая форма с именем и электронной почтой.
Я должен отправить эти данные во внешний API (почему я использую запрос).
В форме я использую action="/send" для использования route.post('/send'...
Данные из будут опубликованы, и я верну данные из API (например, ошибка для имени или почты или просто успех), но пользователь также должен / отправить.
Но мне нравится держать пользователя на текущей странице и выдавать ошибки там.
Итак, у меня есть несколько примеров с экспресс-валидатором и экспресс-сессией. Но нет примера того, как использовать валидатор с ответными данными из внешнего API и использовать сообщения из этого API.
Вот что у меня есть на данный момент:
Может быть любая страница
router.get('/:id', function(req, res, next) {
Request.get("https://cmediaapi.datingpartner.com/content/v3_real/profile/" + req.param("id"), (error, response, data) => {
if(error) {
return console.dir(error);
}
// console.dir(JSON.parse(data));
obj = JSON.parse(data);
// console.dir(obj[1].pseudo);
res.render('user', {
title: 'Chat',
user: obj,
success: false,
errors: req.session.errors
});
req.session.erros = null;
});
});
И это send.js
router.post('/', function(req, res, next) {
var dp = '7daz1bba1';
var key = '256e5a83-40b7-4fd0-846b-71f415926957';
console.dir(req.body.pseudo.val);
console.dir(req.body.email.val);
Request.post(
'https://media.datingpartner.com/signup/webmaster.php?dp='+dp+'&app_key='+key+'',
{ form: { user: req.body.pseudo.val, email: req.body.email.val} },
function (error, response, data) {
if (!error && response.statusCode == 200) {
console.dir(data);
obj = JSON.parse(data);
console.dir(obj.data);
console.dir(obj.data.errors);
if (obj.data.errors) {
console.log('there is a error');
var email = obj.data.errors[0];
console.log(email);
var msg = email[1];
console.log(msg);
req.session.errors = obj.data.errors;
req.session.success = false;
// res.send(msg);
}
else {
req.session.success = true;
}
}
}
);
backURL = req.header('Referer') || '/';
res.redirect(backURL);
})
и моя маленькая пробная форма в PUG/Jade
div#content
form(action="/send" method="POST")#signup
input(name="pseudo[val]")
br
input(name="email[val]")
br
input(type="submit")
div#results
if errors
each error, i in errors
li #{error.msg}
Было бы здорово, если бы кто-нибудь знал, как обращаться с этими внешними API, чтобы получать ошибки на той же странице без перенаправления пользователя (только после успеха).
Большое спасибо.