Я пытаюсь опубликовать в своем бэкэнде Laravel некоторые данные в виде массива 'offer':
Вот как это выглядит в почтальоне и работает: keys: offer [title] , предложение [описание] , предложение [author_user_id]
теперь с axios я пробовал что-то вроде:
offer: {
title: this.input.title,
description: this.input.description,
author_user_id: id,
}
пробовал также с: [key => val] и, например, offer.title: значение , но также не удалось.
Как это должно выглядеть?
РЕДАКТИРОВАТЬ:
this.axios.post('http://api.wip/api/offer/store', {
offer: {
title: this.input.title,
description: this.input.description,
author_user_id: id,
},
category: 2
}, {
headers: {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/x-www-form-urlencoded',
'X-Requested-With': 'application/json'
}
})
.then(function () {
})
.catch(function () {
});
В моей консоли я вижу, что это отправляется как:
{"offer":{"title":"asd","description":"asd","author_user_id":"2"},"category":2}:
Я получаюОшибка 500 от сервера с ответом от Laravel о том, что он ожидает, что данные будут массивом.
"message": "Argument 1 passed to Illuminate\\Database\\Eloquent\\Builder::create() must be of the type array, null given, called in D:\\wamp64\\www\\apitest\\vendor\\laravel\\framework\\src\\Illuminate\\Support\\Traits\\ForwardsCalls.php on line 23",
Как я уже говорил, он работает с почтальоном, но не может сделать это из axios
Контроллер Laravel:
public function store(Request $request) {
$offer = Offer::create($request->input('offer'));
$offer->category()->sync($request->input('category'));
$offer->save();
return response()->json($offer);
}