laravel框架开发接口教程之一 (起步篇)

先大概说一下为什么要写这个系列的教程吧,我最近接到一个用laravel重构公司项目的任务,而且是前后端分离的模式。这样后端就剥离了view层,只要写好数据接口就ojbk了。

为什么不选择dingo/api

说到api开发,很多人都会提到知名度比较高的dingo/api这个扩展包,我为什么没有直接选择它呢,下边解释一下原因:

这个包是专门为了方便的写接口开发的。刚用起来的时候感觉没什么问题,后来发现使用这个扩展包跟前端配合上是有很大问题的:

  1. 异常处理严格遵循http规范。一般来说按规范来当然没什么问题,但是我们这种小公司,产品线又特别多,过分复杂的接口规范会增加很多不必要的工作量。很多前端应用在碰到接口返回的http状态码是500的时候就认为接口是无法访问的,不会继续读取数据了。这显然是不合适的。
  2. 返回数据格式难以统一。对于php这种动态弱类型的语言,如果你要操作一个未定义的变量,只会报一个notice的错误。但是对大多数语言来说,未定义变量的引用都可能是会导致崩溃的。所以数据一致是写接口的时候最重要的问题。然而这个扩展包并没有很好的考虑这个问题。
  3. 其实上边两个问题都可以通过DIY的方式解决掉,但是为什么不这样做呢?因为我研究了一下dingo/api的实现方式,是通过接管laravel框架自身的处理请求,响应和抛出异常的动作来实现的。如果我们要DIY,就等于还要接管dingo/api的这些动作。而且大概看了一下,很多操作都要去kernel文件去注册。这样一方面会把项目代码搞得很乱,另一方面也失去了使用dingo/api的意义。

所以最终我放弃了这个 “方便” 的扩展包,通过自行DIY的方式来改造laravel框架,使它更适合接口开发,并且有很强的定制性。

创建新项目

使用laravel安装器新建项目。

laravel new api

进入api目录,把 .env.example 文件复制到当前目录,并改名称为 .env。

cp -r .env.example .env

执行生产app_key的命令。

php artisan key:generate

打开.env 文件,修改配置文件中的url,应用名称等信息。

配置一下本地测试域名为 api.test,这个属于后端开发的基本操作了,如果不会请自行百度,注意指向的目录是api/public。

创建数据库,并修改 .env 文件中的数据库连接配置。

尝试访问api.test,看到welcome页面说明项目创建成功。

删除一些不必要的文件

由于这个项目是用于开发接口的,所以把视图层的文件删除,以精简整个项目的目录结构。

resources/js
resources/css
resources/views
public/css
public/js
public/robots.txt
public/favicon.ico

这样一个初始的laravel项目就搭建完成了,下一篇会讲解一下路由的规划方式。

评论

(= ̄ω ̄=)··· 暂无内容!

回复

您还未登录,请先登录或者注册