概述

Lumen是一个基于Laravel的微框架,主要用于小型应用和微服务,专注于性能和速度的优化,该框架一个重要的应用就是构建 RESTAPI。

为什么用Lumen构建REST API

Lumen访问速度非常快 每秒能够处理的请求数比Laravel更多 使用 nikic/FastRoute 取代Symphony,从而提升了性能

安装 & 配置

关于Lumen详细安装教程参考官方文档: http://laravelacademy.org/post/6328.html

这里我们使用Composer在web根目录下安装:

composer create-project laravel/lumen rest_api

安装完成后,在 .env 中配置数据库连接信息:

DB_DATABASE=<db_name>
DB_USERNAME=<db_username>
DB_PASSWORD=<db_password>

然后在 bootstrap/app.php 中取消下面两行之前的注释:

$app->withFacades();
$app->withEloquent();

此时在浏览器访问 rest_api.dev (Mac下使用Valet,windows请自行设置虚拟域名),页面显示如下:

Lumen (5.3.2) (Laravel Components 5.3.*)

数据库迁移

接下来我们来创建数据表。

在项目根目录下运行如下命令:

php artisan make:migration create_table_cars --create=cars

该命令将会在 database/migrations/ 目录下创建一个迁移文件 <date>_create_table_cars.php ,接下来我们来编辑这个文件来定义数据表。

Schema::create('cars', function (Blueprint $table) {
$table->increments('id');
$table->string('make');
$table->string('model');
$table->string('year');
});

现在我们来运行这个迁移:

php artisan migrate

这样,就会在数据库中创建对应的表:


创建模型

接下来我们在 app 目录下创建模型文件 Car.php ,并编写代码如下:

<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Car extends Model
{
protected $fillable = ['make', 'model', 'year'];
public $timestamps = false;
}

创建控制器

然后创建控制器文件 app/Http/Controllers/CarController.php :

<?php
namespace App\Http\Controllers;
use App\Car;
use Illuminate\Http\Request;
class CarController extends Controller
{
public function createCar(Request $request)
{
$car = Car::create($request->all());
return response()->json($car);
}
public function updateCar(Request $request, $id)
{
$car = Car::find($id);
$car->make = $request->input('make');
$car->model = $request->input('model');
$car->year = $request->input('year');
$car->save();
return response()->json($car);
}
public function deleteCar($id)
{
$car = Car::find($id);
$car->delete();
return response()->json('删除成功');
}
public function index()
{
$cars = Car::all();
return response()->json($cars);
}
}

定义路由

剩下的就是配置路由了,我将会为增删改查配置对应路由。打开 app/Http/routes.php 并添加如下路由:

$app->group(['prefix' => 'api/v1'], function($app)
{
$app->post('car','CarController@createCar');
$app->put('car/{id}','CarController@updateCar');
$app->delete('car/{id}','CarController@deleteCar');
$app->get('car','CarController@index');
});

注意我将这组路由放到了 api/v1 前缀下。

测试API

现在让我们用curl来测试这组REST API。

首先我们来测试创建:

curl -i -X POST -H "Content-Type:application/json" http://rest_api.dev/api/v1/car -d '{"make":"audi","model":"tt","year":"2016"}'

输出如下则表示创建成功:

HTTP/1.0 200 OK
Host: rest_api.dev
Connection: close
X-Powered-By: PHP/7.0.6
Cache-Control: no-cache
Content-Type: application/json
Date: Sun, 13 Nov 2016 07:06:13 GMT
{"make":"audi","model":"tt","year":"2016","id":1}

然后我们来测试更新刚刚创建的这条记录:

curl -H "Content-Type:application/json" http://rest_api.dev/api/v1/car/1 -X PUT -d '{"make":"bmw","model":"x6","year":"2016"}'

输出如下,表示更新成功:

{"id":1,"make":"bmw","model":"x6","year":"2016"}

接下来我们来测试列表页面:

curl -H "Content-Type:application/json" http://rest_api.dev/api/v1/car -X GET

输出如下:

[{"id":1,"make":"bmw","model":"x6","year":"2016"}]

最后,我们测试下删除API:

curl -X DELETE http://rest_api.dev/api/v1/car/1

最新文章

  1. vmware 三种网络模式
  2. hdu 1715 大菲波数 高精度和运算,水
  3. 配置ST3在浏览器中打开
  4. iOS:抽屉侧滑动画两种形式(1、UIView侧滑 2、ViewController侧滑)
  5. Conditionals with Omitted Operands (x ? : y)
  6. python基础 [Alex视频]
  7. Java Math的floor,round,ceil函数小结
  8. hadoop环境搭建之关于NAT模式静态IP的设置 ---VMware12+CentOs7
  9. JQuery小知识
  10. 什么是CLOS架构?
  11. BZOJ5203 [NEERC2017 Northern] Grand Test 【dfs树】【构造】
  12. 虚拟节点操作——DocumentFragment
  13. Can not deserialize instance of xxx out of START_ARRAY token
  14. git 远程仓库与本地项目关联
  15. Android利用LocalSocket实现Java端进程与C端进程之间的IPC
  16. 聊聊 getClientRects 和 getBoundingClientRect 方法
  17. [十四]SpringBoot 之 Spring拦截器(HandlerInterceptor)
  18. linux命令(6)crontab的用法和解析,修改编辑器
  19. Python的编码问题(一)
  20. perl模拟登录(1)

热门文章

  1. iOS实现UITableViewDataSource与Controller的分离
  2. 创建Github远程仓库
  3. MVC中的AOP
  4. css实现div,文字水平居中的方案。
  5. 解析大型.NET ERP系统 界面与逻辑分离
  6. java自定义注解类
  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(50)-Easyui 扁平化皮肤
  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(36)-文章发布系统③-kindeditor使用
  9. ASP.NET Core 中文文档 第三章 原理(4)路由
  10. Apworks框架实战