如何在Laravel API Route中使用Delete

时间:2018-03-23 04:24:59

标签: php json laravel api

我使用Laravel作为Backend并通过JSON生成API,我使用php来获取json数据并通过laravel中的路由api删除数据,但它似乎无法正常工作。 laravel中的API路径

Route::delete('articles/{article}', 'ArticleController@delete');

我的控制器

public function delete(Article $article)
{
    $article->delete();
    return response()->json(null);
}

我的API网址

http://192.168.0.21/api/articles/id

我的PHP前端代码删除

$json = file_get_contents('http://192.168.0.21/api/articles/' . $id);
$json_data = json_decode($json, true);
unset($json_data['id']);

这些解决方案?

2 个答案:

答案 0 :(得分:2)

您将路由方法设置为DELETE但是您正在使用GET的file_get_contents请求它。

你需要使用curl:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://192.168.0.21/api/articles/' . $id);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$result = json_decode($result);
curl_close($ch);

答案 1 :(得分:2)

<强>路线 在您要删除的记录的{id},ID中传递ID。

Route::delete('articles/{id}', 'ArticleController@delete');

<强> ArticleController

public function delete($id) {
    $article = Article::findOrFail($id);
    if($article)
       $article->delete(); 
    else
        return response()->json(error);
    return response()->json(null); 
}

AJAX CALL

        $.ajax({
            url: BASE_URL + '/articles/'+ id,
            type: 'DELETE',
        })
        .done(function() {
            console.log("success");
        })
        .fail(function() {
            console.log("error");
        })
        .always(function() {
            console.log("complete");
        });