我正在使用laravel学习api rest,我能够实现除PUT之外的所有方法。尽管路由和控制器配置正确,但使用PUT方法对请求的响应是"laravel put对不起,找不到您要查找的页面。“,As now image。
下面是app/Http/ controller /LivroController.php中控制器中的方法代码:
public function store(Request $request) {
$livro = $request->isMethod('put') ? Livro::findOrFail($request->livro_id) : new Livro;
$livro->id = $request->input('livro_id');
$livro->nome = $request->input('nome');
$livro->descricao = $request->input('descricao');
$livro->user_id = 1; //$request->user()->id;
if($livro->save()) {
return new LivroResource($livro);
}}
以下是/routes/api.php中的路由代码:
Route::put('livro', 'LivroController@store');
发布于 2018-06-08 09:32:08
如果要创建新数据,则应使用post方法,
Route::post('livro', 'LivroController@store');
public function store(Request $request) {
如果要更新现有数据,则应使用put方法,
Route::put('livro/{id}', 'LivroController@update');
public function update(Request $request, $id) {
您可以使用此包https://github.com/durmus-aydogdu/laravel-resource进行rest调用。这个包对于rest和资源调用是高度可定制的。
发布于 2018-06-08 05:09:38
将postman方法更改为POST,然后在Body中添加新参数:
"_method" : PUT
这是因为HTML表单不支持PUT、PATCH或DELETE操作。因此,在定义从HTML表单调用的PUT、PATCH或DELETE路由时,您需要在表单中添加一个隐藏的_method字段
发布于 2018-06-08 09:56:17
最好使用控制器类型的资源,在本例中使用put方法。此外,您还应该验证请求。例如:
public function update(Request $request, $id)
{
$livro = Livro::findOrFail($id);
$validator = Validator::make($request->all(), [
'livro_id' => 'required',
'nome' => 'required',
'descricao' => 'required',
]);
if ($validator->fails()) {
return response()->json(['errors'=>$validator->messages()],Response::HTTP_UNPROCESSABLE_ENTITY);
}else{
$livo->update($request->all());
return response()->json(['livro'=>$livro], Response::HTTP_OK);
}
}
https://stackoverflow.com/questions/50749985
复制相似问题