Я написал api rest для обработки всех запросов на мое приложение чата, таких как вход в систему, регистрация или отправка сообщения. Это хорошо работает для моего серверного кода, однако я хочу войти или зарегистрироваться, чтобы вместо этого отправить запрос остальным API. На API запрос никогда не получен от клиента. Я пытался протестировать его в основном аналогичным образом на отдельном
Я работаю над приложением чата, которое я начал примерно месяц назад
Код для сервера, который обрабатывает логины:
app.route('/login').post(async (req, res) => {
console.log('login request')
var users = await serverController.listDocuments({
database:'chatbase',
collectionName:'users',
query:`{'username':'${req.body.usrnm}'}`
})
if(!users[0]) return res.send('Incorrect Credentials')
var user = new User(users[0])
var isCorrect = await bcrypt.compare(req.body.psw, user.password)
if(!isCorrect) return res.send('Incorrect Credentials')
res.send({token: user.token, username:user.username, id:user.id})
})
Код для клиентской стороны:
let xhr = new XMLHttpRequest()
xhr.open("POST", 'https://api.domain.com')
xhr.setRequestHeader('Content-Type', "application/json");
xhr.onreadystatechange = () => {
if (xhr.status == 200) {
alert('Reqest succeeded');
}
alert(xhr.status)
}
xhr.send(JSON.stringify({
usrnm:'Example Username',
psw:'Example Password'
}))
Код для сервера (Работы):
socket.on('login', credentials => {
var opt = {
uri:'https://message-api.glitch.me/login',
method:'POST',
body:credentials,
headers: {
'User-Agent': 'Request-Promise'
},
json:true
}
rp(opt)
.then(res => {
if(res == 'Incorrect Credentials') return socket.emit('loginFailed')
socket.emit('loginSuccess', res)
})
})
Серверный код получает кредиты от пользователя, а затем перенаправляет их в API. Затем сервер получает либо токен, с помощью которого пользователь может отправлять сообщения, либо он отправляет неверный логин (Работает). Код API просто маршрутизирует различные типы запросов, такие как создание серверов или вход в систему (работает из запросов на стороне сервера). Клиентская сторона создает запрос и затем отправляет его (никогда не получает)