Если я проверяю свою форму внешнего интерфейса с помощью axios, используя опцию «data», она не проходит проверку в моем приложении для внутреннего интерфейса.
axios.post('http://example.com/', {
'Content-Type': 'multipart/form-data',
Accept: 'application/json',
data: {
email: 'email@email.com',
password: '12345678',
}
}).then(res => console.log(res))
.catch(err => console.log(err));
Поэтому здесь я использую опцию «data» для проверки.
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string'
]);
Возвращает: 422 адрес электронной почты требуется пароль требуется.
Вот как форматируется запрос:
{Content-Type: "application/json", data: {email: "email@email.com", password: "12345678"}}
Однако, если я отправляю форму таким образом с помощью axios, она проверяется, и я захожу:
'Content-Type': 'multipart/form-data',
'Accept': 'application/json',
'email': 'email@email.com',
'password': '12345678',
Итак, мой вопрос, как сказать валидатору заглянуть внутрь объекта данных?
РЕДАКТИРОВАТЬ 1: По запросу dd($request->attributes);
возвращает:
ParameterBag {#53
#parameters: []
}
2 ответа
Это потому, что вы добавляете headers
как data
в свой запрос axios
. Ваш запрос должен быть таким:
const headers = {
'Accept': "application/json",
'Content-Type': "application/json",
};
let data: {
email: 'email@email.com',
password: '12345678',
};
axios.post('http://example.com/',data, {headers:headers})
.then( (response) => {
//do the stuff
})
.catch( (error) => {
// do the stuff
});
Note:
axios
функция post принимает сначала argument
как url
, затем как data
и третье как config (headers etc)
, а в вашем случае вы смешиваете заголовок с данными. Вы можете прочитать больше об axios здесь
Спасибо.
Проблема в том, зачем вам добавлять data
в ваши аксиосы?
Если вы добавляете data
, тогда ваша проверка должна быть такой:
$request->validate([
'data.email' => 'required|string|email',
'data.password' => 'required|string',
]);
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.