Метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD. ",… - PullRequest
0 голосов
/ 07 апреля 2019

У меня проблемы при использовании контроллера laravel resourceApi вместе с vue js, который я создаю, и приложением, в котором я использую vue и laravel. Я публикую значение для хранения метода моего контроллера, но он говорит, что метод не разрешен или 405исключение в ответе.Мне нужна помощь, я новичок в Laravel и Vue.

Вот мой код

**UserController :** 

public function store(Request $request)
    {
        return ['message' => 'i have your data'];
    }

**Route:**
Route::apiResources(['user' => 'API\UserController']);

**Vue Code:**

<form @submit.prevent="createUser">
            <div class="modal-body">
              <div class="form-group">
                <input
                  v-model="form.name"
                  placeholder="Enter name"
                  type="text"
                  name="username"
                  class="form-control"
                  :class="{ 'is-invalid': form.errors.has('name') }"
                >
                <has-error :form="form" field="name"></has-error>
              </div>

              <div class="form-group">
                <input
                  v-model="form.email"
                  placeholder="Enter email"
                  type="email"
                  name="username"
                  class="form-control"
                  :class="{ 'is-invalid': form.errors.has('email') }"
                >
                <has-error :form="form" field="email"></has-error>
              </div>

              <div class="form-group">
                <textarea
                  v-model="form.bio"
                  placeholder="Enter bio"
                  type="email"
                  name="username"
                  class="form-control"
                  :class="{ 'is-invalid': form.errors.has('bio') }"
                />
                <has-error :form="form" field="bio"></has-error>
              </div>

              <div class="form-group">
                <select
                  v-model="form.type"
                  placeholder="Enter bio"
                  name="type"
                  class="form-control"
                  :class="{ 'is-invalid': form.errors.has('type') }"
                >
                  <option value>---Select User Role---</option>
                  <option value="admin">Admin</option>
                  <option value="user">Standard User</option>
                  <option value="author">Author</option>
                </select>
                <has-error :form="form" field="bio"></has-error>
              </div>

              <div class="form-group">
                <input
                  v-model="form.password"
                  placeholder="Enter email"
                  type="password"
                  name="password"
                  class="form-control"
                  :class="{ 'is-invalid': form.errors.has('password') }"
                >
                <has-error :form="form" field="password"></has-error>
              </div>
            </div>
            <div class="modal-footer">
              <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
              <button type="submit" class="btn btn-primary">Create</button>
            </div>
          </form>

**Vue method :**

  createUser() {
      this.form.post("api/user");
    }

ошибка: enter image description here

Ответы [ 3 ]

1 голос
/ 07 апреля 2019

Возможно, в вашем посте есть ошибка в axios. Было бы полезно, если бы вы показали свой метод createUser (). Но я предполагаю, что вы должны сделать что-то как таковое, чтобы ваш код запускался.

    createUser()
   {
     axios.post('/api/user/store',{

     //your fields and all

       })
    }
1 голос
/ 07 апреля 2019

Я попытался запустить ваш код в моей программе, и весь код, который вы упомянули выше, выглядит нормально.Поскольку вы не предоставили код метода createUser, поэтому я думаю, что вы, возможно, допустили ошибку при вызове API.

Пожалуйста, попробуйте следующий код один раз в вашем axios пост-маршруте.

methods:{
 createUser(){
              axios.post('/api/user/store', {
                   //keep your field here//
         }).then(res => {
                 console.log(res)
                }
             }
    }
0 голосов
/ 07 апреля 2019

Маршруты ресурсов API не поддерживают функцию создания и редактирования, я имею в виду метод POST или PUT. Метод apiResource автоматически исключает эти два маршрута (создание и редактирование). Если вы хотите сохранить или обновить что-либо, вы можете указать другой маршрут с соответствующей функцией или использовать маршруты ресурсов, а не маршрут ресурсов API, например, как

Route :: resource (['user' => 'API \ UserController']);

пожалуйста, просмотрите документацию https://laravel.com/docs/5.8/controllers#restful-partial-resource-routes

...