Отправка данных к серверу на Axios
Почему-то выходит 404 ошибка при отправке данных на сервер? В чём может быть проблема?
Это мой hook:
import axios from 'axios'
export const reg = async (email, password, firstName, lastName, e) => {
try {
const res = await axios.post('/api/auth/registration', {
email,
password,
firstName,
lastName
})
alert(res.data)
} catch (e) {
console.log(e);
alert(e.res.message)
}
}
Это моя форма:
import React, { useState } from 'react'
import { reg } from '../actions/user'
import Input from '../util/Input'
const SignIn = () => {
const [ email, setEmail ] = useState('')
const [ password, setPassword ] = useState('')
const [ firstName, setFirstName ] = useState('')
const [ lastName, setLastName ] = useState('')
const regHandler = async (e) => {
e.preventDefault()
try {
const data = await reg(email, password, firstName, lastName)
console.log(data);
} catch (e) {
console.log(e);
}
}
return(
<div>
<div className="container">
<form className="white">
<h2>Вход</h2>
<div className="input-field">
<label htmlFor="firstName">First Name</label>
<Input value={firstName} setValue={setFirstName} type="text"/>
<div className="input-field">
<label htmlFor="lastName">Last Name</label>
<Input value={lastName} setValue={setLastName} type="text" />
</div>
<div className="input-field">
<label htmlFor="email">E-mail</label>
<Input value={email} setValue={setEmail} type="text"/>
</div>
<div className="input-field">
<label htmlFor="password">Password</label>
<Input value={password} setValue={setPassword} type="password"/>
</div>
<div className="input-field">
<button onClick={regHandler} className="btn pink lighten-3 z-depth-0">Войти</button>
</div>
</div>
</form>
</div>
</div>
)
}
export default SignIn
Это сервер который принимает запрос с клиента -
const Router = require("express");
const User = require("../models/User")
const bcrypt = require("bcryptjs")
const jwt = require('jsonwebtoken')
const {check, validationResult} = require("express-validator");
const config = require("config");
const router = new Router()
router.post('/registration',
[
check('email', "Uncorrect email").isEmail(),
check('password', 'Password must be longer than 3 and shorter than 12').isLength({min:3, max:12})
],
async (req, res) => {
try {
const data = req.body
console.log(data);
const errors = validationResult(req)
if (!errors.isEmpty()) {
return res.status(400).json({message: "Uncorrect request", errors})
}
const {email, password} = req.body;
const candidate = await User.findOne({email})
console.log(candidate);
console.log(candidate);
if(candidate) {
return res.status(400).json({message: `User with email ${email} already exist`})
}
const hashPassword = await bcrypt.hash(password, 8)
const user = new User({email, password: hashPassword})
await user.save()
return res.json({message: "User was created"})
} catch (e) {
console.log(e)
res.send({message: "Server error"})
}
})
router.post('/login',
async (req, res) => {
try {
const { email, password} = req.body
const user = await User.findOne({ email })
if(!user) {
res.status(404).json({message: "Пользователь не найден"})
}
const isPassValid = bcrypt.compareSync(password, user.password)
if(!isPassValid) {
res.status(400).json({message: "Пользователь найден"})
}
const token = jwt.sign({id: user.id}, config.get('secretKey'), {expiresIn: '1h'})
res.json({
token,
user: {
id: user.id,
email: user.email
}
})
} catch (e) {
console.log(e)
res.send({message: "Server error"})
}
})
module.exports = router