介绍
在开发后台接口现在更多的企业选择了PHP
来开发后台接口 当然Python
和NodeJs
不失为是一种不错的选择
不过这里就以PHP
为例 基于Laravel
框架开发后台API
这里也是如果你是从事其他方向想做一些后台API
开发 都可以去尝试一下的
当然实例项目我会不放在我的
github
上仅供参考 @geekGhcgithub demo地址 https://github.com/GeekGhc/dingo-api-demo
前期准备
当然前提是安装PHP
的环境 因为PHP7
无论是从性能还是以后的推广度都是首选
所以如果想去繁从简的话可以安装PHP的集成环境 这里可以XAMPP
这里给出下载地址
https://www.apachefriends.org/zh_cn/index.html 选择7.1版本安装即可
当然安装过程很简单 但要保证将PHP设置为环境变量 这样至少我们才可以使用php命令
安装结束后 终端执行
$ php --version
查看到对应的版本即可
接下来就是安装composer 这是PHP的安装依赖库 我们可以下载到我们需要的第三方依赖包
这里也给出相应的地址 https://getcomposer.org/doc/00-intro.md#downloading-the-composer-executable
对于不同的平台 安装方式肯定不一样 不过相对来说在windows
环境下 可以下载完可执行文件直接安装即可 安装系统盘就行
安装完毕后确保composer依旧在环境变量中 在终端执行
$ composer -V
查看到对应的版本即可
这些关于PHP
的安装完毕之后 那么基本就可以进入到Laravel
的安装
Laravel安装
如果说没有接触过Laravel的话可以这两种方式其实都是不错的选择
1.通过Laravel安装工具
使用之前的composer下载Laravel安装包
$ composer global require "laravel/installer"
请确定你已将 ~/.composer/vendor/bin
路径加到 PATH
,只有这样系统才能找到 laravel
的执行文件
一旦安装完成,就可以使用 laravel new
命令在指定目录创建一个新的 Laravel
项目,例如:laravel new blog
2.通过 Composer Create-Project
你也可以通过 Composer
在命令行运行 create-project
命令来安装 Laravel
:
$ composer create-project --prefer-dist laravel/laravel blog
Laravel API基本配置
为了后面的演示 这里我创建了一个新的项目
$ laravel new codespace-api
这里的项目名随意 这样可以安装到最近的版本
Sublime
或者PHPStrom
打开项目 打开.env文件
这里有一小段配置需要改下
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=codespace-api
DB_USERNAME=root
DB_PASSWORD=password
这里的后面信息就是修改我们连接的Mysql
数据库的信息 包括数据库名 数据库用户名和密码
修改为你本地或者服务器上的数据即可
启动内置服务器服务
$ php artisan serve
简单了解Laravel的工作流程
因为这里我们只是作为后台开发 那么我们必须了解几下几点我们是需要学习和掌握的
- 1.接口的书写规范和设计规则
- 2.
sql
语句的编写和数据表的设计 - 3.有关
api
的用户认证和token
的了解
首先谈下第一个就是接口的书写规范和设计风格 这个其实在阮一峰的一个文章早就谈过 尽管会有点争议 对于学习
restful api的设计 还是很值得参考的
在了解了api
的设计风格后 再结合我们平常所使用的第三方的api
接口其实设计起来就是这样
不过接口的具体设计还是得根据客户端的项目需求而定
对于第二个sql
语句的编写和数据表的设计 这个也就因人而异了 如果有多年的开发经验 我想一些sql
查询 包括多表关联都是很好解决的
在Laravel
中只是语法的不同罢了 当然对于多表关联 在Laravel
会有Eloquent Model
对应的关系可以很好的解决 这里只谈就用原生的sql语句来编写我们的数据信息的话
这里可以需要阅读Laravel 的数据库操作文档(给出中文为了更好的说明 可以的话还是看看官方的英文文档比较好)
这里给出地址 http://d.laravel-china.org/docs/5.3/queries
这里可以找到关于操作数据库的一些sql
语法
Laravel的数据表设计
在Laravel数据表的设计可以对应着Model 也可以单独创建 如果只是专注后台 可以创建我们需要的表
所有表的设计内容都是在database/migrations下
一开始是为我们创建了users
和password_resets
表的
这里我们再去创建一个posts
表的话 在项目终端执行
$ php artisan make:model Lesson -m
这样就可以创建我们所对应的lessons
表 在这个migrations
里也就是标的迁移文件写我们的lessons
表的字段信息
php?start_inline=1
Schema::create('lessonss', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('body');
$table->boolean('free');
$table->timestamps();
});
在Laravel
中我们可以去定义个字段的测试信息 也就是我们的Seeder
在databases/factories/ModelFactory.php
中加入posts
表的字段
$factory->define(App\Lesson::class, function (Faker\Generator $faker) {
return [
'title' => $faker->sentence,
'body' => $faker->paragraph,
'free' => $faker->boolean()
];
});
定义完表的结构 那么接下来就是迁移我们的数据表 因为之前已经配置过数据库的相关信息 所以在项目根目录
$ php artisan migrate
再去生成20条测试数据 打开项目的目录终端打开tinker
$ php artisan thinerk;
指定命名空间
$ namespace App;
生成20条测试数据
$ factory(Lesson::class,20)->create();
回车即可生成20条测试数据 打开数据库在lessons
表就可以看到
为了方便路由处理 我们去生成一个控制器 为了不和应用混淆 我们在App
目录下 新建Api
文件夹
并新建Controllers
和Transformer
目录为了存放我们的控制器和处理字段返回
在Controllers目录下也新建我们的控制器基类 可以模仿着应用控制器里的
下面的话我们在这里的控制器就可以继承这个基类
话不多说 生成我们的LessonsController
在命令行执行
$ php artisan make:controller App\\Api\\Controllers\\LessonsController
下面的可能就是集成Dingo api
和Jwt
认证了 如果没有用过Laravel
的也没有关系 可以结合下面我的博客文章
安装 dingo api
在composer.json文件里添加
"dingo/api": "1.0.*@dev"
接着在laravel
项目的config
的app.php
去添加服务
'providers' => [
Dingo\Api\Provider\LaravelServiceProvider::class
]
再去生成相应的配置文件
$ php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
如果需要实现jwt
同样的也是去安装页面 安装这个package
"require": {
"tymon/jwt-auth": "0.5.*"
}
添加对应的服务:
'Tymon\JWTAuth\Providers\JWTAuthServiceProvider'
当然也是需要去配置一下他的alias
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class
生成配置文件
$ php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
生成一个key
$ php artisan jwt:generate
当然在
composer.json
添加完依赖包 需要去下载相关的扩展包 即在项目终端执行composer update
使用
这个时候我们是在开发的环境下 还需对Dingo
进行相应的配置 在.env
文件里
API_STANDARDS_TREE=vnd
添加前缀
API_PREFIX=api
填写版本 这个我们之前自己写测试的时候也是提供的v1以此来区别版本
API_VERSION=v1
开启Debug
模式
API_DEBUG=true
关闭Script
模式
API_STRICT=false
这样的话我们安装就算已经完成了 具体的业务部分在另一篇文章 Laravel从零开发后台API(二)
文章涉及到用户的登录注册 以及我们之前注册好的Lessson Model
的信息获取
参考我的博客文章
- Laravel API开发初探
- Laravel API结合Dingo API和JWT