laravel作為一門(mén)流行的php框架,已經(jīng)成為了開(kāi)發(fā)人員寫(xiě)api的首選。通過(guò)laravel,你可以快速編寫(xiě)高質(zhì)量的api,其越來(lái)越受到企業(yè)級(jí)和個(gè)人開(kāi)發(fā)者的歡迎。
在這篇文章中,我們將探討如何使用Laravel編寫(xiě)API。我們將從以下幾個(gè)方面入手:構(gòu)建API、API路由、控制器和API測(cè)試。
構(gòu)建API
在構(gòu)建API時(shí),需要使用Laravel提供的內(nèi)置中間件和路由器。從Laravel 5.5開(kāi)始,框架內(nèi)置了API資源控制器(API Resource Controller)功能。這個(gè)特性使得開(kāi)發(fā)者可以更快的創(chuàng)建標(biāo)準(zhǔn)的REST API,并且?guī)椭_(kāi)發(fā)者維護(hù)代碼一致性。
如何使用資源控制器?首先,在命令行中執(zhí)行以下命令,新建一個(gè)控制器:
php artisan make:controller Api/PostController --api
這會(huì)創(chuàng)建一個(gè)名為PostController的API控制器,它將自動(dòng)繼承Laravel的內(nèi)置的ResourceController,并且包含所有的預(yù)定義的方法。這些方法包括:index、show、store、update和destroy。
API路由
在Laravel中,路由與控制器緊密耦合,因?yàn)槲覀冃枰诼酚芍卸x處理API請(qǐng)求的頂級(jí)控制器。
Route::prefix('api')->group(function () { Route::resource('posts', 'ApiPostController'); });
這個(gè)路由定義了一個(gè)’/api/posts’的URL,用來(lái)操作Post模型的 CRUD 功能。
控制器
在資源控制器中,我們可以使用預(yù)定義的函數(shù)來(lái)處理常見(jiàn)的任務(wù)。例如,下面的代碼開(kāi)始創(chuàng)建并附加post文章的文件上傳,將文件從存儲(chǔ)庫(kù)中移動(dòng)到公共目錄中:
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測(cè)試
測(cè)試API是確保其功能正常工作的關(guān)鍵,請(qǐng)確保在編寫(xiě)API時(shí)編寫(xiě)測(cè)試用例。Laravel也內(nèi)置了框架測(cè)試工具來(lái)幫助您輕松地編寫(xiě)測(cè)試用例。
在為API編寫(xiě)測(cè)試時(shí),您可以使用發(fā)送HTTP請(qǐng)求并檢查響應(yīng)的方法來(lái)測(cè)試控制器。例如,下面的代碼測(cè)試控制器是否可以正確地獲取帖子的列表:
public function testPostIndex() { $response = $this->json('GET', '/api/posts'); $response->assertStatus(200); $response->assertJsonStructure([ 'data' => [ '*' => [ 'id', 'title', 'description', 'slug', 'photo', 'created_at', 'updated_at' ] ] ]); }
結(jié)論
在Laravel中,編寫(xiě)API非常容易。使用預(yù)定義的API控制器和內(nèi)置的路由器,您可以快速創(chuàng)建標(biāo)準(zhǔn)的REST API。使用Laravel的測(cè)試工具編寫(xiě)測(cè)試用例,檢查API功能是否正常工作。優(yōu)秀的文檔和社區(qū)支持,是讓Laravel成為開(kāi)發(fā)人員最受歡迎的框架之一的關(guān)鍵因素。