首页 > 解决方案 > 不允许 axios 发布 405 | Laravel + vue.js

问题描述

我无法创建新的数据库记录,因为提交后它总是显示 POST 405(不允许)。我试图将 laravel 路由从 api.php 移动到 web.php 但它没有用。还尝试修改 axios.post 链接(创建、/创建、localhost://Reservationsystem/public/create),但它也没有给我结果。

网页.php

Route::resource('/reservation','ReservationController');
Route::get('/{any}', 'SinglePageController@index')->where('any', '.*');

路由.js

import Vue from 'vue'
import Router from 'vue-router'
import Home from './components/HomeComponent.vue'
import Reservations from './components/ReservationsComponent.vue'

Vue.use(Router);

export default new Router({
    routes: [
        {
            path: '/',
            name: 'home',
            component: Home
        },
        {
            path: '/reservations',
            name: 'reservations',
            component: Reservations
        }
    ]
})

主页组件.vue

<script>
    import axios from 'axios';

    export default {
        data: function () {
            return {
                reservation: {
                    name: '',
                    surname: '',
                    email: '',
                    date: '',
                    place: ''
                }
            }
        },
        methods: {
            addReservation: function () {
                let uri = 'reservation';
                axios.post(uri, this.reservation).then(res => this.reservation = [...this.reservation, res.data]);
            }
        }
    }
</script>

控制器方法:

public function store(Request $request)
{
    $reservation= new Reservation($request->all());
    $reservation->save();

    return new ReservationResource($reservation);
}

标签: phplaravelvue.jspostaxios

解决方案


您可能得到 405 的原因是因为该路线不是 Post 与 addReservation 方法中的 post 重合。我将使用以下 post 路线:

Route::post('/reservation/store','ReservationController@store');

对于 axios 中的 uri,我会使用:

let uri = 'reservation/store';

这是一篇文章的链接,展示了我如何在 Laravel 中使用 axios。 带代码的博客文章


推荐阅读