初识api-platform:

都0202年了,整天还在用php一遍又一遍的写crud api吗?还在为构建restfull风格api而烦恼吗?那么,symfony的衍生框架api-platform你值得拥有。

东西很强大,只是国内好像用的人不是很多,只有英文文档也难怪(不过现在机翻这么强大,这都不是问题)。作为过来人,把好东西分享给大家。同时,好记性不如烂键盘!

当然,api-platform不只是在symfony框架上加了一个api快速构建组件这么简单,这里有一张官网菜单的机翻截图:

api组件可以基于symfony框架快速构建restfull api、管理员组件可以通过对easyBundle配置快速构建后台管理、客户端生成器组件可以结合当前主流的3大前端框架生成客户端界面。

没错,它想让你优雅的成为一名优雅的全栈(然而大多数时候全栈和全干好像一个意思|||)。

附:

  1. 官方文档 https://api-platform.com/

安装/环境构建:

你可以使用 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初体验(快速上手笔记)的更多相关文章

  1. 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <五> NSDicionary + NSMutableDictionary

    int main(int argc, const char * argv[]) { @autoreleasepool { //字典, 存储的内存不是连续的 用key和value进行对应(键值) //k ...

  2. grunt 构建工具(build tool)初体验

    操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/  直接点击install ,会根据你的操 ...

  3. [Ajax] AJAX初体验之-在博客中添加无刷新搜索

    现在博客很流行,相信应该上网时间稍微长点的朋友都会在这或者在那的有一个自己的博客.对于一些有一定能力的朋友,可能更喜欢自己去下载一个博客程序来架设一个自己的博客,而不是使用一些博客网站提供的服务.而大 ...

  4. php 使用 restler 框架构建 restfull api

    php 使用 restler 框架构建 restfull api restler 轻量级,小巧,构建restfull api非常方便! 官网:http://restler3.luracast.com/ ...

  5. 快速构建第三方api应用

    1.使用框架和扩展 详细请看composer.json "php": "^7.1.3", "laravel-admin-ext/config" ...

  6. 爬虫入门系列(三):用 requests 构建知乎 API

    爬虫入门系列目录: 爬虫入门系列(一):快速理解HTTP协议 爬虫入门系列(二):优雅的HTTP库requests 爬虫入门系列(三):用 requests 构建知乎 API 在爬虫系列文章 优雅的H ...

  7. Spring MVC 中使用 Swagger2 构建动态 RESTful API

    当多终端(WEB/移动端)需要公用业务逻辑时,一般会构建 RESTful 风格的服务提供给多终端使用. 为了减少与对应终端开发团队频繁沟通成本,刚开始我们会创建一份 RESTful API 文档来记录 ...

  8. JAVA WEB快速入门之从编写一个基于SpringBoot+Mybatis快速创建的REST API项目了解SpringBoot、SpringMVC REST API、Mybatis等相关知识

    JAVA WEB快速入门系列之前的相关文章如下:(文章全部本人[梦在旅途原创],文中内容可能部份图片.代码参照网上资源) 第一篇:JAVA WEB快速入门之环境搭建 第二篇:JAVA WEB快速入门之 ...

  9. Top11 构建和测试API的工具

    立刻像专业人士一样构建API 组织正在改变他们已经在软件应用项目中成功的微服务架构模型,这就是大多数微服务项目使用API(应用程序接口)的原因. 我们要为微服务喝彩,因为它相对于其他的模型有各种先进的 ...

  10. 快速创建Flask Restful API项目

    前言 Python必学的两大web框架之一Flask,俗称微框架.它只需要一个文件,几行代码就可以完成一个简单的http请求服务. 但是我们需要用flask来提供中型甚至大型web restful a ...

随机推荐

  1. 小程序和h5垂直时间轴

    <template> <view class="steps"> <view class="list" v-for="(i ...

  2. AI定制祝福视频,广州塔、动态彩灯、LED表白,直播互动新玩法(附下载链接)

    在追剧的时候经常能看到一些浪漫的告白桥段,男主用圣诞彩灯表白.用城市标志性建筑的LED表白,或者在五光十色的烟花绽放后刻下女主角的名字,充满了仪式感和氛围感~ 现在,这样的表白效果用AI软件就能实现了 ...

  3. LeetCode 题解大全

    项目说明 LeetCode 系列题解致力于帮助程序员更好地理解和掌握算法思维,内容包含详细的解题思路分析.图文并茂的示例讲解和完整的代码实现. LeetCode 最全题解:持续更新中,欢迎 Star ...

  4. OneDrive分享、多人操作电脑中大文件的方法

      本文介绍基于OneDrive网盘实现电脑大文件共享.协同办公的方法. 1 前言   作为网盘的重度用户,在学习.工作.生活中可以说少不了与各类云盘打交道.在这一过程中,也慢慢了解到不同网盘软件的特 ...

  5. 批量删除MySQL生产环境数据库表或表字段注释脚本

    本文提供了一种批量删除MySQL生产环境中数据库表的注释或表字段注释的方法,通过脚本实现高效维护表结构的清晰性. 一.表注释修改 1.获取删除MySQL数据库表注释脚本select concat('A ...

  6. 动手学大模型应用开发,第4天:Prompt设计

    第一章.Prompt 设计的原则和技巧 LLM 时代 prompt 这个词对于每个使用者和开发者来说已经听得滚瓜烂熟,那么到底什么是 prompt 呢?简单来说,prompt(提示) 就是用户与大模型 ...

  7. Hive - [06] 行转列,列转行

    行转列(多行转一行) 1.创建表,并插入示例数据. create table students_info( `SNO` string comment '学生编号', `name` string com ...

  8. 什么是git,什么是github,git和github的使用

    Git实战 注意:本项目是学习笔记,来自于哔哩哔哩武沛齐老师的Git实战视频, 网址:[武沛齐老师讲git,看完绝对上瘾!!!] https://www.bilibili.com/video/BV1n ...

  9. 【ABAQUS&Composite】composite layerup Manager从txt导入铺层信息

    ABAQUS 在复合材料建模方面自由度是比较高的.官方提供了两个工具: ABAQUS/CAE中的Composite Layup Manager ABAQUS/CAE的plugin:Composites ...

  10. xxe学习笔记

    什么是xxe XXE(XML External Entity Injection)全称为XML外部实体注入,由于程序在解析输入的XML数据时,解析了攻击者伪造的外部实体而产生的.例如PHP中的simp ...