Я пытаюсь сделать так, чтобы я мог зарегистрировать пользователя, но я получаю ошибку 404, предполагая, что это означает, что реакция не может найти маршрут, установленный файлом api.php, есть ли что-то еще, что мне не хватает? Я уже установил в файле package.json, что для прокси установлено значение «localhost: 8000» (порт, который я выбрал для серверной части laravel). Я смущен тем, почему он не попадает по этому маршруту при отправке. Я чувствую, что я близок, но я новичок в использовании php в качестве бэкэнда, поэтому любое понимание будет полезно.
Я также создаю что-то, где пользователь может воспроизводить музыку в приложении, поэтому есть маршрут для этого помеченного «магазин», и это не работает по той единственной причине, что я не установил этот маршрут (также дает ошибка 404).
Ниже приведены мои маршруты API, которые я пытаюсь отреагировать на обнаружение.
<?php
Route::post('register','UserController@register');
Route::post('login','UserController@login');
Route::post('profile','UserController@getAuthenticatedUser');
Route::middleware('auth:api')->get('/user', function(Request $request){
return $request->user();
});
?>
А это React-часть моего регистрационного файла.
import React, { Component } from 'react';
import { register } from './UserFunctions';
class Register extends Component {
constructor() {
super()
this.state = {
first_name: '',
last_name: '',
email: '',
password: '',
errors: {},
}
this.onChange = this.onChange.bind(this)
this.onSubmit = this.onSubmit.bind(this)
}
onChange(e) {
this.setState({ [e.target.name]: e.target.value })
}
onSubmit(e) {
e.preventDefault()
const newUser = {
name: this.state.first_name + ' ' + this.state.last_name,
email: this.state.email,
password: this.state.password
}
register(newUser).then(res => {
if (res) {
this.props.history.push('/login')
}
})
}
render() {
return (
<div className = "container">
<div className = "row">
<div className = "col-md-6 mt-5 mx auto">
<form noValidate onSubmit = {this.onSubmit}>
<h1 className = "h3 mb-3 font-wieght-normal">
Register
</h1>
<div className = "form-group">
<label htmlFor = "first_name">First Name</label>
<input type = "text" className = "form-control" name = "first_name" placeholder = "Enter First Name" value = {this.state.first_name} onChange = {this.onChange} />
<label htmlFor = "last_name">Last Name</label>
<input type = "text" className = "form-control" name = "last_name" placeholder = "Enter Last Name" value = {this.state.last_name} onChange = {this.onChange} />
<label htmlFor = "email">Email Address</label><br />
<input type = "email" className = "form-control" name = "email" placeholder = "Enter Email" value = {this.state.email} onChange = {this.onChange} />
<br />
<label htmlFor = "password">Desired Password</label><br />
<input type = "password" className = "form-control" name = "password" placeholder = "Enter Password" value = {this.state.password} onChange = {this.onChange} />
</div>
<button type = "submit" className = "btn btn-lg btn-primary btn-block">Register</button>
</form>
</div>
</div>
</div>
)
}
}
export default Register
У меня определены эти почтовые маршруты, но когда я нажимаю «Отправить» в форме регистрации, я получаю сообщение об ошибке 404, говорящее, что он не может найти этот маршрут.





Можешь показать мне свою
import { register } from './UserFunctions';
файл, чтобы я мог видеть определенный путь URL.
Предполагая, что этот маршрут находится внутри ваших маршрутов /api.php
Route::group(['middleware' => 'api', 'prefix' => 'v1'], function(){
Route::post('register', 'RegisterController@index');
});
и в JS-файле
import axios from 'axios'
export const register = newUser => {
return axios
.post('api/v1/register', newUser,
{
headers: { 'Content-Type': 'application/json' }
})
.then(res => {
console.info(res)
})
.catch(err => {
console.info(err)
})
}
Это в конечном итоге сработало, но я мог бы оставить все как есть. Я понял, что забыл "/" перед API/v1/регистр или просто "API/регистр", так что это должно было быть "/API/v1/регистр" или "/API/регистр" . Большое спасибо за то, что помогли мне осознать этого человека!
не уверен, сделал ли я то, что должен был, но я отредактировал вашу вещь, чтобы показать, как она выглядит, только с помощью функции регистрации. импортировать axios из 'axios' export const register = newUser => { return axios .post('/register', newUser, { headers: { 'Content-Type': 'application/json' } }) .then(res => { console.info(res) }) .catch(err => { console.info(err) }) }