放入 laravel API

PUT in laravel API

我正在学习 api 休息 laravel,我能够实现除 PUT 之外的所有方法。尽管路由和控制器已正确配置,但使用 PUT 方法对请求的响应是 "laravel put Sorry, the page you are looking for could not be found."、As now image.

这里是控制器中的方法代码在app/Http/Controllers/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');

将您的邮递员方法更改为 POST,然后在您的 Body 中添加新参数:

"_method" : PUT

这是因为 HTML 表单不支持 PUT、PATCH 或 DELETE 操作。因此,当定义从 HTML 表单调用的 PUT、PATCH 或 DELETE 路由时,您需要向表单

添加一个隐藏的 _method 字段

如果你想创建新数据,你应该使用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 进行休息通话。此包高度可定制,可用于休息和资源调用。

最好使用控制器类型的资源,在这种情况下使用 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);
  }

}