使用Laravel5編寫(xiě)API

說(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ù)

composer創(chuàng)建Laravel項(xiàng)目

創(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)直接去官方文檔查看)
.env文件數(shù)據(jù)庫(kù)配置
  • 新建用戶(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

User模型

創(chuàng)建控制器

php artisan make:cotroller UserController

app\Http\Controllers\UserController.php

User控制器

  • 新增 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í)的路由。
下面我們給 UserControllergetUser() 方法寫(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

訪(fǎng)問(wèn)獲取用戶(hù)信息API
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 必備品文檔:DocumentationAPI: API Reference視頻:Laracasts速查表:Lara...
    ethanzhang閱讀 5,885評(píng)論 0 68
  • Awesome PHP 一個(gè)PHP資源列表,內(nèi)容包括:庫(kù)、框架、模板、安全、代碼分析、日志、第三方庫(kù)、配置工具、W...
    guanguans閱讀 6,129評(píng)論 0 47
  • 原文鏈接 必備品 文檔:Documentation API:API Reference 視頻:Laracasts ...
    layjoy閱讀 8,712評(píng)論 0 121
  • 是什么 如果你知道yum、apt-get、npm、bower等命令中的一種或者多種,那么,你也能很快知道compo...
    旱魃一樣閱讀 3,357評(píng)論 0 9
  • 繪畫(huà)小白第一次畫(huà)人物,肯定是很丑很丑啦。沒(méi)錯(cuò),我就是丑的給你們開(kāi)心的。
    如磨如啄閱讀 479評(píng)論 0 2

友情鏈接更多精彩內(nèi)容