我在使用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");
}
答案 0 :(得分:1)
在axios中,您的发布路线可能有错误。如果您显示createUser()方法,将很有帮助。但是我想您必须执行一些操作才能运行代码。
createUser()
{
axios.post('/api/user/store',{
//your fields and all
})
}
答案 1 :(得分:1)
我尝试在程序中运行您的代码,上面提到的所有代码似乎都不错。由于您尚未提供createUser
方法的代码,因此我认为您在调用api时可能做错了。
请在您的axios
发布路线中尝试以下代码一次。
methods:{
createUser(){
axios.post('/api/user/store', {
//keep your field here//
}).then(res => {
console.log(res)
}
}
}
答案 2 :(得分:0)
API资源路由不支持创建和编辑功能,我的意思是POST或PUT方法。 apiResource方法会自动排除这两个路由(创建和编辑)。如果要存储或更新某些内容,可以指定其他路由及其相应的功能,或者使用资源路由,而不是像这样的API资源路由,
Route :: resource(['user'=>'API \ UserController']);
请仔细阅读文档https://laravel.com/docs/5.8/controllers#restful-partial-resource-routes
答案 3 :(得分:0)
axios具有默认路径,因此,如果获取请求为“ / user” ,则该路径将为“ http:// localhost / client”,但是如果您从另一个路径“ http”进行呼叫:// localhost / invoice”,并且获取请求为“用户” ,因此axios将当前路径作为基本路径“ http:// localhost / invoice / invoice / user”,因此您必须使用“ /用户” 。
您可以查看文档:{{3}}
createUser(){
axios.post('/api/user',{
/* parameter */
})
}