最近用Laravel写了一段时间的API,总结一下自己的心得吧。StartAPI开发我们可以看到,有些网站使用token来验证身份,有些网站使用OAuth2.0。当时我也在纠结,然后看到了一个不错的说法。一般来说,会涉及到别人使用OAuth,自己用的token就可以了。在设计之初,最好在路由中加上版本号,方便以后的扩展。(){//更多的});如果前端要跨域,请使用barryvdh/laravel-cors这个非常方便的包一个简单的接口示例验证API开发总是离不开验证,推荐使用jwt-auth,1.0即将到来,而且新版文档也很清楚。刚开始用jwt-auth的时候我也有疑惑。Laravel自带的token校验使用的是数据库api_token字段校验,但是jwt-auth需要这个。然后想自己看源码,结果QAQ。我去问了官方>_<原来用户的信息已经存储在token中并加密了。一开始我也有疑惑。这样存的话,不就解密不了吗?artisanjwt:secret生成秘钥,大家不要泄露,保证安全~~~当然路由使用的是官方的api路由Route::apiResource(),路由名称一个比五个强。当然RESTful方式保留了动词和复数形式,顾名思义,一些长路由应该用什么来分隔?Laravel使用破折号(-),因为Google收集关键字时,以破折号分隔。国内的用破折号(_)收集。这取决于你自己。我喜欢下划线>__<不得不说,当涉及到多对多关联时,Laravel对条件关联的处理非常好。在上面的示例中,如果未加载关联,则posts键将在资源响应发送到客户端之前被删除。当不确定输出链接数据时,这是一个有用的功能!!!响应输出当时在laravel-china看到这个帖子,然后觉得这个方法不错,于是照做了,使用基类的方法统一响应输出。异常是个大问题。妥善处理异常可以使您的代码更加优雅。\App\Exceptions\Handler::render方法可以捕获许多有用的异常。比如我的代码是这样写的:UnauthorizedHttpException这是捕获jwt的异常ValidationException这是表单异常。捕获后,表单错误信息可以很好的格式化,ModelNotFoundException是模型中找不到的异常。抓到之后可以直接在controller里这样//没抓到之前的写法publicfunctionshow($id){$user=User::find($id);if(!$user){}//做点什么}//现在publicfunctionshow($id){$user=User::findOrFail($id);}//即使这个publicfunctionshow(User$user){//dosomething}下面两个异常是不能捕获的,但是开发的时候可以方便的查看错误信息。NotFoundHttpException404找不到路由的异常,没什么好说的。MethodNotAllowedHttpException这是一个不对应的方法。我差点忘了这个,文件非常非常重要。我不喜欢用swagger-ui+swagger-edit在评论里写文档。下载swagger-ui,只需要dist目录即可(其他可以删除)。我也把swagger-editor的index.html改成edit.html,然后把这两个东西整合到同一个目录下(记得修改css和js的位置)新建两个文件api.json,api.yaml是大概和图中的那些差不多。需要修改图中箭头所指的位置,变成api.json。访问edit.html编写文档。写语法。访问index.html查看文档。edit.html写好后,导出json,然后粘贴到api.json文件中。记得把写好的格式保存到api.yaml中,因为清除缓存后,下次访问的时候就消失了。写个包方便创建controller和验证所有控件设备继承重写的基类,响应输出方便。例如,完成验证只需要三秒钟。第一秒:phpartisanapi:auth第二秒:出现图像表示成功;*第三秒:取出arm的劳力士,确认只用了三秒多用:laravel-api-helper的工作是API开发相关的,有空再来补其他经验。更多参考RESTfulAPI设计指南