symfony快速构建restfull api--api-platform初体验(快速上手笔记)
初识api-platform:
都0202年了,整天还在用php一遍又一遍的写crud api吗?还在为构建restfull风格api而烦恼吗?那么,symfony的衍生框架api-platform你值得拥有。
东西很强大,只是国内好像用的人不是很多,只有英文文档也难怪(不过现在机翻这么强大,这都不是问题)。作为过来人,把好东西分享给大家。同时,好记性不如烂键盘!
当然,api-platform不只是在symfony框架上加了一个api快速构建组件这么简单,这里有一张官网菜单的机翻截图:

api组件可以基于symfony框架快速构建restfull api、管理员组件可以通过对easyBundle配置快速构建后台管理、客户端生成器组件可以结合当前主流的3大前端框架生成客户端界面。
没错,它想让你优雅的成为一名优雅的全栈(然而大多数时候全栈和全干好像一个意思|||)。
附:
安装/环境构建:
你可以使用 composer require api 直接将api-platform作为依赖安装。
使用:
1、api组件的使用
--------- 初级用法 --------------------------------------------------
1、创建api
如果成功安装了api-platform,使用 bin/console make:entity 命令创建entity(输入entity name时或问你是否标记这个类为一个api platform资源,默认no,你可以输入yes)之后,访问项目的/api路由,你惊奇的发现entity的crud api和文档都已经生成好了(并且做了分页),并且页面还给每个接口都附带了一个测试工具。没错,就是这么快。

--------- 进阶用法 --------------------------------------------------
上面这些接口可能不太灵活,想要自定义,没问题:过滤器用起来
2、过滤器
你想要的 大|小|等于、排序、模糊查询、范围等等一切的查询,写写注释,改改配置,api就写完了美滋滋。
这时候用过symfony的人突然发现,我他喵的用symfony连doctrine都不用学了,哈哈哈!
1>、搜索过滤器(个人觉得这个比较常用,文档 https://api-platform.com/docs/core/filters/#search-filter)
比如在DocumentResource类里做了如下配置(注意注释第二行):
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
/**
* @ApiResource()
* @ApiFilter(SearchFilter::class, properties={"resourceGroup":"exact","fileName":"partial"})
* @ORM\Entity(repositoryClass="App\Repository\DocumentResourceRepository")
*/
class DocumentResource
{
// ...
}
* exact 精确查找 partial 模糊查找 *
于是这样的api就已经创建成功了:

结果:

3、序列化器
上面接口返回的json里某些属性值是类似 "/api/users/1" 这样,如果想只直接获取到对象的属性的值就需要用到序列化器了。
直接上图直观对比:


序列化器文档:https://api-platform.com/docs/core/serialization/
其他的后面用到再更啦。。。
-----最后更新于 2020-8-19
symfony快速构建restfull api--api-platform初体验(快速上手笔记)的更多相关文章
- 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <五> NSDicionary + NSMutableDictionary
int main(int argc, const char * argv[]) { @autoreleasepool { //字典, 存储的内存不是连续的 用key和value进行对应(键值) //k ...
- grunt 构建工具(build tool)初体验
操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/ 直接点击install ,会根据你的操 ...
- [Ajax] AJAX初体验之-在博客中添加无刷新搜索
现在博客很流行,相信应该上网时间稍微长点的朋友都会在这或者在那的有一个自己的博客.对于一些有一定能力的朋友,可能更喜欢自己去下载一个博客程序来架设一个自己的博客,而不是使用一些博客网站提供的服务.而大 ...
- php 使用 restler 框架构建 restfull api
php 使用 restler 框架构建 restfull api restler 轻量级,小巧,构建restfull api非常方便! 官网:http://restler3.luracast.com/ ...
- 快速构建第三方api应用
1.使用框架和扩展 详细请看composer.json "php": "^7.1.3", "laravel-admin-ext/config" ...
- 爬虫入门系列(三):用 requests 构建知乎 API
爬虫入门系列目录: 爬虫入门系列(一):快速理解HTTP协议 爬虫入门系列(二):优雅的HTTP库requests 爬虫入门系列(三):用 requests 构建知乎 API 在爬虫系列文章 优雅的H ...
- Spring MVC 中使用 Swagger2 构建动态 RESTful API
当多终端(WEB/移动端)需要公用业务逻辑时,一般会构建 RESTful 风格的服务提供给多终端使用. 为了减少与对应终端开发团队频繁沟通成本,刚开始我们会创建一份 RESTful API 文档来记录 ...
- JAVA WEB快速入门之从编写一个基于SpringBoot+Mybatis快速创建的REST API项目了解SpringBoot、SpringMVC REST API、Mybatis等相关知识
JAVA WEB快速入门系列之前的相关文章如下:(文章全部本人[梦在旅途原创],文中内容可能部份图片.代码参照网上资源) 第一篇:JAVA WEB快速入门之环境搭建 第二篇:JAVA WEB快速入门之 ...
- Top11 构建和测试API的工具
立刻像专业人士一样构建API 组织正在改变他们已经在软件应用项目中成功的微服务架构模型,这就是大多数微服务项目使用API(应用程序接口)的原因. 我们要为微服务喝彩,因为它相对于其他的模型有各种先进的 ...
- 快速创建Flask Restful API项目
前言 Python必学的两大web框架之一Flask,俗称微框架.它只需要一个文件,几行代码就可以完成一个简单的http请求服务. 但是我们需要用flask来提供中型甚至大型web restful a ...
随机推荐
- SOUI4新版本的日志系统介绍
原来的日志输出宏用法有点奇怪,感觉总是不够理想.这近有点时间终于把它重整了一下. 以前的用法就不介绍了,重点介绍一下新版本的用法. 在SOUI中使用的日志系统包含两个部分:日志输出宏及日志到文件的打印 ...
- 云安全CIA:关键信息保证的三大支柱
本文分享自天翼云开发者社区<云安全CIA:关键信息保证的三大支柱>,作者:每日知识小分享 随着云计算的迅速普及,云安全问题越来越受到关注.云安全涉及的范围广泛,涵盖了云端数据中心的物理安全 ...
- InfluxDB修改数据存储位置(二进制安装版)
InfluxDB修改数据存储位置(二进制安装版) 在二进制安装方式下,修改InfluxDB的数据存储位置通常涉及以下几个步骤.以下步骤以InfluxDB 2.x版本为例进行说明,因为InfluxDB ...
- MacSecureCRT配置
一.调整连接服务器超时时间 Options->Global Options->General->Default Session-> 右侧Edit Default Setting ...
- MOS管耗散功率的计算
MOS管的功率,一般是指Maximum Power Dissipation--Pd,最大的耗散功率,具体是指MOS元件的容许损失,可从产品的热阻上求得.当Tc=25度时,通过附加最大容许损耗Pd,则变 ...
- Typecho 如何开启外链转内链
把博客中的外部链接转换为网站内链,据说有利于搜索引擎收录.该插件主要由 benzBrake 大佬 编写,同时支持转换文章和评论中的链接. 上传插件 下载 Master Branch Code 后上传到 ...
- Datagrip 破解
题记部分 方法一 [参考链接]:DataGrip 2023.2最新安装使用教程(附激活码,亲测好用)_糖果果爱分享的技术博客_51CTO博客 [软件版本]:datagrip-2023.3.4.win ...
- Kettle - 简介
ETL简介 Kettle简介 transformation 和 job的区别 Kettle 的核心组件 Kettle 特点 Kettle 的目录说明 Kettle 的文件说明 ETL简介 ETL,Ex ...
- 大数据之路Week10_day01 (Hbase总结 II)
Hbase是数据库 特点: 1.面向列:Hbase是面向列的存储和权限控制,并支持独立索引.列式存储,其数据在表中是按照某列存储的,这样在查询只需要少数几个字段时,能大大减少读取的数据量. 2.多版本 ...
- 大模型基础补全计划(二)---词嵌入(word embedding)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 无 前言 本文是这个系列第二篇,它们是: &l ...