Vue axios делает запрос на неверный URL - PullRequest
0 голосов
/ 11 мая 2019

поэтому у меня возникла странная проблема: когда я делаю запрос Put через axios в Vue, он отправляет его по неправильному маршруту.

Это часть простого CRUD через ресурс Laravel API.Получите и отправьте работу отлично.

Это форма:

<form @submit.prevent="editType" method="post" class="mb-4">
            <label v-if="user.gender === 'man'" for="single_male">Enkel<input type="checkbox" name="type" :id="single_male" :value="types.single_male" v-model="checkedType" @change="showSaveButton = true"></label>
            <label v-if="user.gender === 'vrouw'" for="single_female">Enkel<input type="checkbox" name="type" :id="single_female" :value="types.single_female" v-model="checkedType" @change="showSaveButton = true"></label>
            <label v-if="user.gender === 'man'" for="double_male">Dubbel mannen<input type="checkbox" name="type" :id="double_male" :value="types.double_male" v-model="checkedType" @change="showSaveButton = true"></label>
            <label v-if="user.gender === 'vrouw'" for="double_female">Dubbel vrouwen<input type="checkbox" name="type" :id="double_female" :value="types.double_female" v-model="checkedType" @change="showSaveButton = true"></label>
            <label for="double_mix">Dubbel gemengd<input type="checkbox" name="type" :id="double_mix" :value="types.double_mix" v-model="checkedType" @change="showSaveButton"></label>
            <button type="submit" v-if="showSaveButton">Opslaan</button>
        </form>

Моя функция обновления:

 public function update(Request $request, $id)
    {
        $user_id = auth('api')->user()->id;

        $type = Type::where('user_id' ,'=', $user_id)->first();

        $type->single_male = $request->input('single_male');
        $type->single_female = $request->input('single_female');
        $type->double_male = $request->input('double_male');
        $type->double_female = $request->input('double_female');
        $type->double_mix = $request->input('double_mix');

        $type->save();

        return redirect()->back();
    }

Мой метод:

editType() {
                let types = this.types;
                let data = {
                    single_male: this.single_male,
                    single_female: this.single_female,
                    double_male: this.double_male,
                    double_female: this.double_female,
                    double_mix: this.double_mix,
                };
                axios.put('/types/'+types.id, data)
                    .then(request => this.successfulEdit(request))
                    .catch(() => this.failed())
            },
            successfulEdit() {
                alert("Voorkeuren succesvol bijgewerkt!");
            }

и мой маршрут:

    Route::apiresource('types','TypeController');

Когда я делаю запрос на размещение, я вижу в Инструментах разработчика, что он пытается выполнить запрос к текущему URL, что, конечно, дает ошибку 405, недопустимая ошибка.,Когда я изменяю запрос axios на just ('/ types', data), он следует по указанному маршруту, но, конечно, также выдает ошибку 405, поскольку метод put требует id.Жесткое кодирование, например, '/ types / 4 /', также приводит к использованию текущего URL.

Я что-то упускаю или что-то не так?Заранее спасибо, ребята!

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Нашел проблему.return redirect()->back(); был виновником.Спасибо вам всем!

0 голосов
/ 11 мая 2019

Из документов Laravel. https://laravel.com/docs/5.8/routing

Маршруты, определенные в файле route / api.php, вложены в маршрут группа по RouteServiceProvider. В этой группе / api URI префикс применяется автоматически

Поэтому попробуйте добавить /api перед вашим текущим URL-адресом запроса, например axios.put('/api/types/'+types.id, data)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...