php api restful_使用什么PHP轻框架搭建RESTful API 服务好

一. 起源

前几天在准备为一个项目搭建api服务的时候还在纠结选哪个框架好,因为之前一直使用的是zentaoPHP,但是觉得这个框架用来搭api服务似乎不是特别好,但是由于项目时间比较赶,还是选择这个框架,花了两三天写好了大部分api。

使用完这个框架觉得实在变扭,准备打算换个框架重构一下,在选型上我主要有几点考虑

不要太过臃肿的框架。

可以裁剪模块,以提升效率。

性能要好。

二. 遇上lumen

这两天下班利用空余时间搜索了目前较好搭建api服务的框架,调研了slim、YII2.0、phalapi、lumen等等各有好有坏,但是个人觉得slim、lumen较为适合搭建rest api服务,目前ag使用的框架便是slim,两者有相似之处,两者相比个人觉得lumen更为合适。

Lumen 是一个由 Laravel 组件搭建而成的微框架,Laravel在国外的市场份额是第一,文档全面细致,虽然在国内似乎并不是最受欢迎的。

lumen 可以使用composer安装详情可以查看官网文档 安装lumen

三. 主要模块使用说明

配置文件

lumen的配置文件为.env

APP_ENV=local

APP_DEBUG=true

APP_KEY=

APP_TIMEZONE=UTC

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=app

DB_USERNAME=root

DB_PASSWORD=xxxxxx

CACHE_DRIVER=memcached

QUEUE_DRIVER=sync

路由配置

$app->get('/hello', function () use ($app){

return ['welcome to' => 'hello system'];

});

$app->get('/user/getByID', 'UserController@getByID');

$app->delete('/user/delete', 'UserController@delete');

$app->post('/user/create', 'UserController@create');

$app->put('/user/update', 'UserController@update');

数据库操作

只举例简单示例,更多的使用可以查看 官方文档

select

示例1:单个查询

$result = app('db')->table(TABLE_USER)

->where('id',$id)

->get();

示例2:列表查询

public function getList($page,$pageSize,$search = '')

{

$users = app('db')->table(COUPON_TO_PROJECT)->select("*");

if ($search) {

$users->where('name', 'like', '%' . $search . '%');

}

$users->skip(max(0, $pageSize * ($page - 1)));

$users->take($pageSize);

$data['page'] = $page;

$data['pageSize'] = $pageSize;

$data['total'] = $users->count();

$data['list'] = $users->get()->all();

return $data;

}

在Laravel Eloquent 模型返回的结果集中,我们可能要判断取出的结果集是否为空,但我们发现直接使用 is_null 或 empty 是无法判段它结果集是否为空的。

var_dump 之后我们很容易发现,即使取到的空结果集, Eloquent 仍然会返回 Illuminate\Database\Eloquent\Collection 对象实例。

其实,Eloquent 已经给我们封装几个可以用来判断的方法。

//不为空则

if ($result->first()) { }

if (!$result->isEmpty()) { }

if ($result->count()) { }

insert

使用insertGetId()方法可以返回最后插入的ID,若不需返回最后插入的ID insert()即可

$lastInsertID = app('db')->table(TABLE_USER)->insertGetId([

'account' => 'zhangshan',

"password" => '123456',

]);

update

$effect = app('db')->table(TABLE_USER)

->where('id', '=', $id)

->update($data);

delete

$result = app('db')->table(TABLE_USER)

->where('id', '=', $id)

->delete();

四. 缓存

这里主要讲redis 常用方法 ,详细方法请参考文档

.env配置文件里配置CACHE_DRIVER=redis,并配置好连接redis的相关信息

写入缓存

app('cache')->put('key','value',过期时间);

查询

app('cache')->get('key');

五. 几个框架的demo github地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值