說(shuō)明
這篇文章僅為本人如何使用Laravel 5框架編寫(xiě)API,也許有更好的寫(xiě)法,歡迎吐槽。
以下使用的Laravel版本為5.4
參考
Composer:
Composer中文網(wǎng)
Composer中文文檔
Laravel:
Laravel 官網(wǎng)
Laravel China
Laravel 學(xué)院
Go Laravel
CODECAST(原Laravist)
創(chuàng)建項(xiàng)目
在www目錄上使用composer安裝laravel項(xiàng)目
composer create-project laravel/laravel=5.4.* laravel-api --prefer-dist
create-project是使用 Composer 從現(xiàn)有的包中創(chuàng)建一個(gè)新的項(xiàng)目。這相當(dāng)于執(zhí)行了一個(gè) git clone 或 svn checkout 命令后將這個(gè)包的依賴(lài)安裝到它自己的 vendor 目錄。參考composer中文網(wǎng)laravel/laravel=5.4.*表示要安裝laravel看框架,并指定為5.4以上的版本laravel-api是指定要安裝的目錄,比如想要安裝到blog目錄的話(huà),那么可以把這一段替換成blog。參考composer中文網(wǎng) 基本用法-包版本--prefer-dist下載包的方式有兩種: source 和 dist。對(duì)于穩(wěn)定版本 composer 將默認(rèn)使用 dist 方式。而 source 表示版本控制源 。--prefer-dist表示composer 將盡可能的從 dist 獲取,這將大幅度的加快在 build servers 上的安裝。參考composer中文網(wǎng) 安裝-參數(shù)

創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表
- 新建數(shù)據(jù)庫(kù)
laravel-api-teach - 更新數(shù)據(jù)庫(kù)配置
修改項(xiàng)目根目錄的.env文件(這個(gè)文件在Laravel安裝好之后會(huì)自動(dòng)生成,如果沒(méi)有生成,請(qǐng)復(fù)制根目錄的.env.example文件復(fù)制一份并重命名為.env。后面有些laravel基礎(chǔ)部分,在官方文檔里有的將不再?gòu)?fù)述,請(qǐng)直接去官方文檔查看)

- 新建用戶(hù)表
users
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '用戶(hù)名',
`phone` varchar(20) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '手機(jī)號(hào)碼',
`created_at` timestamp NULL DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
`updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶(hù)表';
- 在
app\Models新建users表模型
php artisan make:model Models/User
app\Models\User.php

創(chuàng)建控制器
php artisan make:cotroller UserController
app\Http\Controllers\UserController.php

- 新增
getUser()方法用來(lái)獲取用戶(hù)信息
UserController
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function getUser($id)
{
$user = User::find($id);
return response()->json($user);
}
}
注意api接收數(shù)據(jù)與返回?cái)?shù)據(jù)一般是通過(guò)json格式進(jìn)行傳輸?shù)?,所以返回?cái)?shù)據(jù)的時(shí)候,一般是使用
echo json_encode($data);
不過(guò)Laravel提供了自帶的函數(shù) response(),可以指定返回json格式的數(shù)據(jù)
API路由
如果仔細(xì)看根目錄下的 routes 即路由目錄,就會(huì)發(fā)現(xiàn)有4個(gè)php文件,其中 web.php是訪(fǎng)問(wèn)web頁(yè)面時(shí)的路由,而 api.php則是訪(fǎng)問(wèn)API時(shí)的路由。
下面我們給 UserController 的 getUser() 方法寫(xiě)一個(gè)路由吧
routes\api.php
<?php
use Illuminate\Http\Request;
Route::post('/user/{id}', 'UserController@getUser');
訪(fǎng)問(wèn)API
那么現(xiàn)在開(kāi)始訪(fǎng)問(wèn)寫(xiě)好的這個(gè)API吧
訪(fǎng)問(wèn)Laravel的API路由,是需要在域名后面加上api,與web路由不同
http://xxxxx.com/api/user/1
