首頁 > php框架 > Laravel > laravel如何寫api

laravel如何寫api

PHPz
發布: 2023-04-23 09:59:11
原創
1025 人瀏覽過

Laravel作為一個受歡迎的PHP框架,已經成為了開發人員寫API的首選。透過Laravel,你可以快速編寫高品質的API,其越來越受到企業級和個人開發者的歡迎。

在這篇文章中,我們將探討如何使用Laravel寫API。我們將從以下幾個面向入手:建立API、API路由、控制器和API測試。

建置API

在建置API時,需要使用Laravel提供的內建中介軟體和路由器。從Laravel 5.5開始,框架內建了API資源控制器(API Resource Controller)功能。這個特性使得開發者可以更快的創建標準的REST API,並且幫助開發者維護程式碼一致性。

如何使用資源控制器?首先,在命令列中執行以下命令,新建一個控制器:

php artisan make:controller Api/PostController --api
登入後複製

這會建立一個名為PostController的API控制器,它將自動繼承Laravel的內建的ResourceController,並且包含所有的預先定義的方法。這些方法包括:index、show、store、update和destroy。

API路由

在Laravel中,路由與控制器緊密耦合,因為我們需要在路由中定義處理API請求的頂層控制器。

Route::prefix('api')->group(function () {
    Route::resource('posts', 'Api\PostController');
});
登入後複製

這個路由定義了一個'/api/posts'的URL,用來操作Post模型的 CRUD 功能。

控制器

在資源控制器中,我們可以使用預先定義的函數來處理常見的任務。例如,下面的程式碼開始建立並附加post文章的檔案上傳,將檔案從儲存庫移至公用目錄:

public function store(Request $request)
{
    $path = $request->file('photo')->store('public/photos');
    
    $post = new Post;
    
    $post->title = $request->input('title');
    $post->description = $request->input('description');
    $post->slug = str_slug($request->input('title'));
    $post->photo = $path;
    
    $post->save();
    
    return new Resource($post);
}
登入後複製

API測試

測試API是確保其功能正常運作的關鍵,請確保在編寫API時編寫測試案例。 Laravel也內建了框架測試工具來幫助您輕鬆地編寫測試案例。

在為API編寫測試時,您可以使用發送HTTP請求並檢查回應的方法來測試控制器。例如,下面的程式碼測試控制器是否可以正確地取得貼文的清單:

public function testPostIndex()
{
    $response = $this->json('GET', '/api/posts');
    
    $response->assertStatus(200);
    $response->assertJsonStructure([
        'data' => [
            '*' => [
                'id',
                'title',
                'description',
                'slug',
                'photo',
                'created_at',
                'updated_at'
            ]
        ]
    ]);
}
登入後複製

結論

#在Laravel中,編寫API非常容易。使用預先定義的API控制器和內建的路由器,您可以快速建立標準的REST API。使用Laravel的測試工具編寫測試案例,檢查API功能是否正常運作。優秀的文檔和社群支持,是讓Laravel成為開發人員最受歡迎的框架之一的關鍵因素。

以上是laravel如何寫api的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板