初识api-platform:
都0202年了,整天还在用php一遍又一遍の写crud api吗?还在为构建restfull风格api而烦恼吗?那么,symfonyの衍生框架api-platform你值得拥有。
东西很强大,只是国内好像用の人不是很多,只有英文文档也难怪(不过现在机翻这么强大,这都不是问题)。作为过来人,把好东西分享给大家。同时,好记性不如烂键盘!
当然,api-platform不只是在symfony框架上加了1个api快速构建组件这么简单,这里有一张官网菜单の机翻截图:
api组件可以基于symfony框架快速构建restfull api、管理员组件可以通过对easyBundle配置快速构建后台管理、客户端生成器组件可以结合当前主流の3大前端框架生成客户端界面。
没错,它想让你优雅の成为一名优雅の全栈(然而大多数时候全栈和全干好像1个意思|||)。
附:
安装/环境构建:
你可以使用 composer require api 直接将api-platform作为依赖安装。
使用:
1、api组件の使用
——— 初级用法 ————————————————–
1、创建api
如果成功安装了api-platform,使用 bin/console make:entity 命令创建entity(输入entity name时或问你是否标记这个类为1个api platform资源,默认no,你可以输入yes)之后,访问项目の/api路由,你惊奇の发现entityのcrud api和文档都已经生成好了(并且做了分页),并且页面还给每个接口都附带了1个测试工具。没错,就是这么快。
——— 进阶用法 ————————————————–
上面这些接口可能不太灵活,想要自定义,没问题:过滤器用起来
2、过滤器
你想要の 大|小|等于、排序、模糊查询、范围等等一切の查询,写写注释,改改配置,api就写完了美滋滋。
这时候用过symfonyの人突然发现,我他喵の用symfony连doctrine都不用学了,哈哈哈!
1>、搜索过滤器(个人觉得这个比较常用,文档 https://api-platform.com/docs/core/filters/#search-filter)
比如在DocumentResource类里做了如下配置(注意注释第二行):
use ApiPlatformCoreBridgeDoctrineOrmFilterSearchFilter;
/**
* @ApiResource()
* @ApiFilter(SearchFilter::class, properties={"resourceGroup":"exact","fileName":"partial"})
* @ORMEntity(repositoryClass="AppRepositoryDocumentResourceRepository")
*/
class DocumentResource
{
// ...
}
* exact 精确查找 partial 模糊查找 *
于是这样のapi就已经创建成功了:
结果:
3、序列化器
上面接口返回のjson里某些属性信息值是类似 “/api/users/1” 这样,如果想只直接获取到对象の属性信息の值就需要用到序列化器了。
直接上图直观对比:
序列化器文档:https://api-platform.com/docs/core/serialization/
其他の后面用到再更啦。。。
—–最后更新于 2020-8-19