php rest api lumen,使用Lumen框架创建 REST API 实例教程
Lumen是一个基于Laravel的微框架,主要用于小型应用和微服务,专注于性能和速度的优化,该框架一个重要的应用就是构建 REST API。
为什么用Lumen构建REST API
· Lumen访问速度非常快
· 每秒能够处理的请求数比Laravel更多
·使用nikic/FastRoute取代Symphony,从而提升了性能
安装 & 配置
这里我们使用Composer在web根目录下安装:composer create-project laravel/lumen rest_api
安装完成后,在.env中配置数据库连接信息:
DB_DATABASE=
DB_USERNAME=
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/目录下创建一个迁移文件_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
最后更新:2019-01-07 18:52:17
赞 (9)
or
分享 (2)
php rest api lumen,使用Lumen框架创建 REST API 实例教程相关推荐
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 原文:Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 Asp.Net Cor ...
- php如何访问web api,如何在PHP中创建Web API服务?
SOAP和REST API是广泛使用的API. 考虑存在一个名为manage.php的PHP类,该类有助于管理数据库中的条目.class manage { private $entryId; func ...
- cad动态块制作翻转_CAD创建动态块实例教程:旋转参数和动作的应用 - CAD自学网...
一.打开实例 1 里创建并保存的文件"我的动态块",也可以新建一个文件.在空白处画如图的图形,其中圆的半径为 5. 二.操作菜单"绘图"→"块&quo ...
- Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)
图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core Web Api实现图片上传存储以及生成缩略图呢?今天我就使用MongoDB作为图片存储 ...
- 【WEB API项目实战干货系列】- WEB API入门(一)
这篇做为这个系列的第一篇,做基本的介绍,有经验的人可以直接跳到第二部分创建 ProductController. 创建 Web API 项目 在这里我们使用VS2013, .NET 4.5.1创建一个 ...
- Restful API是什么?初探Restful API,传统接口写法与Restful API接口写法区别
Restful API是什么?初探Restful API?为什么要用Restful API?传统接口写法与Restful API接口写法区别,带着这些问题我们来具体了解下Restful API: 目录 ...
- 元数据驱动设计 —— 为动态移动应用创建Web API
时间回到多年之前(当时我的头发还没这么稀疏),Google在4月1日这一天发布了Gmail,这不由得令许多人怀疑这个产品是否只是Google精心炮制的一个玩笑.但谁又能够去指责他们的怀疑呢?毕竟整个互 ...
- Java数据持久层框架 MyBatis之API学习八(Java API详解)
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...
最新文章
- javascript中的链表结构—双向链表
- Unity3D Image 组件附入图片问题
- QuorumPeerMain.runFromConfig
- Bean的依赖注入概念
- 犹太教、基督教和伊斯兰教的简单关系
- 局域网从另一台电脑copy文件(Linux系统下)
- 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice
- 博弈论中的简单合作博弈 C#实现
- Windows下完成SCTP简单抓包
- Flink Window TOPN: The window can only be ordered in ASCENDING mode.
- mysql 修改wait_timeout
- 网络安全与渗透:sql注入,一文详解(九)此生无悔入华夏,男儿何不带吴钩
- 百度依存句法分析标识说明
- AD20——批量快速放置元件管脚
- 经纬恒润天津研发总部项目开工奠基仪式圆满落幕
- python和matlab的区别_科学网—matlab和python语法对比(1) - 何亮的博文
- 软件加密系统Themida应用程序保护指南(八):额外的选择
- 让Android的emulator支持web camera
- ies4linux 本地安装,在Ubuntu Linux下安装ies4linux使用网银
- htc desire s刷亚太版(也叫全球版)android4.0 RUU的方法
热门文章
- easypoi 导入失败返回错误文件_从Excel批量导入数据说到ForkJoin的原理
- android checkbox 选中事件_挖穿Android第四十九天
- 高德地图文本标注html,设置点标注的文本标签
- c++设置一个二维字符组初值_C语言 | 统计一段话中的字符
- html怎么添加5px高的线,css给div添加0.5px的边框
- python创建线程在后台运行
- python使用sphinx自动生成文档
- centos/Linux 解决使用sudo命令时xxx is not in the sudoers file.This incident will be reported
- 不设置DIV的宽高,让它相对于页面水平垂直居中
- 如何在idea中调试spring bean