资讯专栏INFORMATION COLUMN

Laravel从零开发后台API(一)

selfimpr / 2316人阅读

摘要:介绍在开发后台接口现在更多的企业选择了来开发后台接口当然和不失为是一种不错的选择不过这里就以为例基于框架开发后台这里也是如果你是从事其他方向想做一些后台开发都可以去尝试一下的当然实例项目我会不放在我的上仅供参考地址前期准备当然前提是安装

介绍

在开发后台接口现在更多的企业选择了PHP来开发后台接口 当然PythonNodeJs不失为是一种不错的选择

不过这里就以PHP为例 基于Laravel框架开发后台API 这里也是如果你是从事其他方向想做一些后台API开发 都可以去尝试一下的

当然实例项目我会不放在我的github上仅供参考 @geekGhc

github 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下 一开始是为我们创建了userspassword_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(AppLesson::class, function (FakerGenerator $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文件夹

并新建ControllersTransformer目录为了存放我们的控制器和处理字段返回

在Controllers目录下也新建我们的控制器基类 可以模仿着应用控制器里的


下面的话我们在这里的控制器就可以继承这个基类

话不多说 生成我们的LessonsController 在命令行执行

$ php artisan make:controller AppApiControllersLessonsController

下面的可能就是集成Dingo apiJwt认证了 如果没有用过Laravel的也没有关系 可以结合下面我的博客文章

安装 dingo api

在composer.json文件里添加

"dingo/api": "1.0.*@dev"

接着在laravel项目的configapp.php去添加服务

"providers" => [
    DingoApiProviderLaravelServiceProvider::class
]

再去生成相应的配置文件

$ php artisan vendor:publish --provider="DingoApiProviderLaravelServiceProvider"

如果需要实现jwt 同样的也是去安装页面 安装这个package

"require": {
    "tymon/jwt-auth": "0.5.*"
}

添加对应的服务:

"TymonJWTAuthProvidersJWTAuthServiceProvider"

当然也是需要去配置一下他的alias

"JWTAuth" => TymonJWTAuthFacadesJWTAuth::class,
"JWTFactory" => TymonJWTAuthFacadesJWTFactory::class

生成配置文件

$ php artisan vendor:publish --provider="TymonJWTAuthProvidersJWTAuthServiceProvider"

生成一个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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25586.html

相关文章

  • Laravel从零开发后台API(二)

    摘要:之前我们已经准备好了基本的安装过程现在我们去实现一下具体的业务部分用户的登录与注册对于用户注册这对于一款应用来说再正常不过了为了接下来我们的效果我们可以去生成一个即在项目终端执行生成用户之后我们暂时先不去编辑字段后面我们需要用到时再加返回字 之前我们已经准备好了基本的安装过程 现在我们去实现一下具体的业务部分 用户的登录与注册 对于用户注册 这对于一款应用来说再正常不过了 为了接下来...

    Nekron 评论0 收藏0
  • 后端开发从零个移动应用(后端篇)

    摘要:后端开发的疑惑后端开发最常面对的一个问题性能高并发等等。而到了时代,在方面有了前后端分离概念移动后端更是无力渲染天然前后端分离。 先来上一张前端页面的效果图(Vue + Vux + Vuex + Vue-Router)。showImg(https://segmentfault.com/img/remote/1460000010207850); 第一次做gif 没什么经验,太大了。加载...

    codergarden 评论0 收藏0
  • 小白的边学边写,个基于laravel的APP接口【API】(

    摘要:前期准备原文地址前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件奇妙的事情,就完完全全的陷入的程序的世界。框架,是我最喜欢的框架了,没有之一。 前期准备 原文地址前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件奇妙的事情,就完完全全的陷入的程序的世界。这不,最近又开始折腾APP了,话说现在开...

    Nosee 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<