symfony api 平台深度

2024-05-17

到目前为止,我们一直在 Symfony、Doctrine 和 Serializer 深度方面苦苦挣扎。

我希望能够使用 Symfony 提供一级深度的 JSON REST API,从而允许我直接从视图管理我的“外键”和关系逻辑。

GET /people/1

{
  id:1,
  name:"theonewhoknocks",
  friends: [3, 12, 25]
}

使用 FosRESTBundle,我们一直在努力实现这一目标。 (我们已经看到了模型的“深度”注释和“组”视图,但这些都不符合我们的需要)。

问题很简单,在我们为未来的 API 做出选择之前,我们必须知道:

is API平台 https://api-platform.com/能够提供一个非常简单的一级(具有明显的外键)REST API 吗?


API 平台可以使用序列化器 Symfony 捆绑包 https://symfony.com/doc/current/components/serializer.html及其注释集。

为了定义操作返回的内容,我们使用normalizationContext它定义了要包含在 api 操作结果中的属性组。要包含的属性然后将该组名称链接到@Groups序列化器注释

use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
/**
 * @ORM\Entity()
 * @ApiResource(normalizationContext={"groups"={"read"}}
 */
class Book {
    /**
     * @ORM\Column()
     * @Groups({"read"})
     */
    private $title;

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="books")
     * @Groups({"read"})
     */
    private $author;

    /**
     * Will not be included in result
     */
    private $secret_comment;

}

如果关系列在组中为$author在这里,子类中的组中定义的属性将包含在结果中

/**
 * @ORM\Entity()
 * @ApiResource(normalizationContext={"groups"={"read"}})
 */
class User {
    /**
     * @ORM\Column()
     * @Groups({"read"})
     */
    private $username;
}

为了避免循环递归,您可以使用注释指定子关系连接的最大深度@MaxDepth(n)其中 n 是最大深度(在您的情况下为 1)。该注释必须启用enable_max_depth序列化器上下文中的属性@ApiResource注解

/**
 * @ApiPlatform(normalizationContext={"groups"={"read"}, "enable_max_depth"=true})
 */
class Book {
    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="books")
     * @Groups({"read"})
     * @MaxDepth(1)
     */
    private $author;
}

请注意,在这种情况下,API 平台是现有捆绑包和功能的聚合。请参阅主要捆绑包以获取详细信息(此处为 Symfony Serializer 捆绑包)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

symfony api 平台深度 的相关文章

  • Ruby on Rails 中 RESTful POST 的功能测试

    我想为我正在 Ruby on Rails 应用程序中开发的 RESTful Web 服务编写功能测试 该测试是 POST 请求 其中请求正文是纯 XML 文档而不是表单 有关如何执行此操作的任何指示 我遇到的问题是如何在调用 post 方法
  • REST URL 结构建议

    我正在尝试为我正在开发的网站的愿望清单部分敲定一个宁静的网址结构 这是一个非常简单的模型 用户可以有许多愿望清单 每个愿望清单可以包含许多产品 目前我有明显的 CRUD URL 来操作愿望清单本身 GET account wishlists
  • 对多个路径使用 Single Jersey REST 类

    我已经开始使用 JAX RS 开发 REST 服务 使用 Jersey 非常简单 但是我在使用 Spring MVC 和 Jersey REST 类时遇到的一个区别是 Spring 支持忽略根路径元素并在方法级别具有单独的路径映射 因此 如
  • 如何在 Sonata Admin Bundle 中显示顶部和侧面菜单?

    没有文件谈论这一点 请帮我 谢谢 管理顶部菜单是根据自动创建的group管理服务定义中的项目 所有管理服务都可以分组并显示在顶部菜单中 Example https github com sonata project SonataPageBu
  • FOSUserBundle 和 ACL 业务角色

    这个周末我开始学习 Symfony 2 我没有遇到任何问题 因为我认为该框架有详细记录 我正在使用 FOSUserBundle 包进行 ACL 我想知道是否可以使其类似于 Yii 框架 bizRule return Yii app gt u
  • 从 QueryDSL 谓词对象中获取参数

    我使用带有 Spring REST 端点的 QueryDSL 谓词对象来检索和查询参数值 GetMapping subjectId students RolesAllowed Roles PLATFORM ADMIN Roles USER
  • 作曲家创建项目 symfony/骨骼 new_project“4.0”

    它安装 Symfony 4 1 3 内核 src 环境 dev 调试 true 如何让它准确安装 4 0 composer create project symfony skeleton new project 4 0 Installing
  • Symfony Finder 忽略以点开头的文件

    我使用 Finder 发送假脱机电子邮件 但自动名称生成器会在文件名中添加点 有时它们会出现在文件的开头 似乎查找器无法获取具有该名称的文件 那么这些文件是隐藏的 有人经历过这种行为吗 有什么建议如何使用查找器来查找隐藏文件吗 Thx 刚刚
  • 从 Office 365 日历获取所有事件

    我需要获取 Office 365 日历中的所有事件 当前 GET 请求 https graph microsoft com v1 0 users https graph microsoft com v1 0 users userPrinci
  • 如何使用symfony2中的findOneBy方法返回数组而不是对象?

    我有一种情况 我想使用 symfony2 中的 findOneBy id 方法查询数据库 namePosting this gt getDoctrine gt getRepository MyBundle Users gt findOneB
  • 在 C# 控制台应用程序中使用 HttpClient 使用 WEB API

    我使用 MySQL 数据库在 Visual Studio 2015 中创建了一个 Web API API 运行完美 所以我决定做一个控制台client http www c sharpcorner com article web api w
  • 来自复杂对象的 spring RestTemplate POST 参数

    我正在尝试使用 postForObject 方法使用restTemplate 来测试我们的REST 服务 单元测试 Test public void testPostOrder String url BASE URL orders Orde
  • 如何在没有 baseUrl 的情况下设置 Retrofit

    我的 apiPath 是完全动态的 我有包含 ipAddress 和 SSLprotocol 等字段的项目 基于它们我可以构建我的网址 private String urlBuilder Server server String proto
  • PHP:在 CURL GET 调用中使用 API 密钥

    我看过关于使用 api 密钥在curl 中验证 post 调用的帖子 我有一个 GET 调用 需要 apikey 进行授权 即请求必须具有包含 apiKey 的授权标头 我已经获得了 api 密钥并尝试将其用于 GET 调用
  • 如何在 Codeigniter 中我自己的控制器中生成 API 密钥

    只是想提一下 我确实是 API 开发 概念 结构 最佳实践 方面的新手 我对它一点也不熟悉 所以如果您发现我正在使用 Phil 请原谅我可悲的愚蠢问题Sturgeon 的 REST API 服务器 Curl 库和 REST API 客户端这
  • 为什么“FormDataMultiPart”类型参数被区别对待

    我正在编写一个小网络应用程序 将文件上传到网络服务器 我一切正常 但令我感到困惑的是 几乎所有从客户端 浏览器 发送的参数都必须在服务器端注入单词 FormDataParam except FormDataMultiPart类型参数 有人可
  • LinkedIn Groups API - 在单个 API 请求中获取多个群组的群组徽标

    Using LinkedIn 群组 API http developer linkedin com documents groups api 我正在显示用户在 LinkedIn 上所属的组列表 使用以下命令可以清楚地在一次调用中获取组列表
  • Symfony2 功能测试会话持久性

    我正在尝试在 Symfony 中进行一些功能测试 但目前我的会话遇到了问题 我执行了一段代码 它似乎有效 但容器的会话中没有存储任何内容 我有一个表格 您可以在其中设置数据 当您提交它时 它会检查值并将其存储在会话中 然后它重定向到另一个页
  • 安装 Symfony 2.4.1 lib-icu 4.4 依赖项时出现问题

    我遇到了与以下相同的问题this one https stackoverflow com questions 16753105 problems with lib icu dependency when installing symfony
  • 以 RESTful 方式增加资源计数器:PUT 与 POST

    我有一个带有计数器的资源 为了举例 我们将该资源称为profile 计数器是数量views对于该配置文件 Per the 休息维基 http rest blueoxen net cgi bin wiki pl HttpMethods PUT

随机推荐

  • Web 服务应该是事务性的吗?

    我正在研究为应用程序编写网络服务 在此应用程序中 我们在事务中执行所有操作 因为 工作单元 通常不是单个实体 而是跨越多个表的多个实体 在某些情况下 我们想要 全有或全无 而交易是非常有意义的 然而 我不太确定如何在网络服务中执行此操作 也
  • Node.js 上的 starttls > 0.4.0

    我遇到了这个线程Node js HTTPS 安全错误 https stackoverflow com questions 5136353 node js https secure error其中提到 tls 模块是现在在节点上执行 TLS
  • 如何以编程方式获取 WooCommerce 中的所有产品?

    我想获取 WooCommerce 中的所有产品数据 产品 sku 名称 价格 库存数量 可用性等 我可以使用 wp query 来做到这一点吗 这样你就可以通过 wp query 获取所有产品 global wpdb all product
  • 从另一个数据帧创建一个数据帧(使用数据透视)

    我对熊猫有疑问 我有一个包含三列的数据框 id1 id2 amount 由此 我想创建另一个数据框 其索引为 id1 其列为 id2 单元格包含相应的 金额 我们来看一个例子 import pandas as pd df pd DataFr
  • Oracle:动态设置表中所有 NOT NULL 列以允许 NULL

    我有一个包含 75 多个列的表 几乎所有列都有 NOT NULL 约束 如果执行巨大的更改表修改语句 其中的每一列 我会收到一条错误消息 内容大致为 您不能将此字段设置为 NULL 因为它已经是 NULL 我必须对几个表执行此操作 因此更希
  • 使用 pywinauto 自动安装软件时出错

    经过搜索 我找不到好的回复 我正在尝试使用 pywinauto 自动化公司软件 我尝试使用app print control identifiers 只要有可能 这是上帝派来的 感谢 Youtube 上的人们和 Vasily 的帖子 请参阅
  • bash 中 :-(冒号破折号)的用法

    bash中这种风格的含义是什么 PUBLIC INTERFACE eth0 目的是什么 If PUBLIC INTERFACE存在且不为null 则返回其值 否则返回 eth0 实际上有一些记录在bash 手册页 http linux di
  • 添加/删除带有动画的 UITableViewCell?

    我知道这听起来像是一个愚蠢的问题 但我到处都看过 我怎样才能做到这一点 我知道如何使用 swype to delete 方法来执行此操作 但是我如何在该函数之外执行此操作 请发布一些代码示例 Thanks Coulton self tabl
  • 我需要观看哪些最佳的 PDC 2008 视频?

    考虑已发布的 PDC 视频的完整列表here http channel9 msdn com posts pdc2008 RSS Default aspx考虑到与您的工作 技术等的相关性 您认为哪些会议最适合下载和观看 请每个答案一个会话 仅
  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • Pandas hub_table 更快的替代品

    我正在使用熊猫pivot table在大型数据集 1000 万行 6 列 上运行 由于执行时间至关重要 因此我尝试加快流程 目前 处理整个数据集大约需要 8 秒 这太慢了 我希望找到替代方案来提高速度 性能 我当前的 Pandas 数据透视
  • 来自 io.BytesIO 流的 numpy.load

    我将 numpy 数组保存在 Azure Blob 存储中 并将它们加载到如下所示的流中 stream io BytesIO store get blob to stream container cat npy stream 我知道从str
  • 使用 PHP 的 Google Glass GDK 身份验证

    我正在尝试点击此链接来验证 GDK 中的用户 https developers google com glass develop gdk authentication https developers google com glass de
  • 无法使用 paramiko 查看 ifconfig 输出

    我正在使用下面的代码在远程计算机上执行命令 import paramiko import os dssh paramiko SSHClient dssh set missing host key policy paramiko AutoAd
  • docker中CREATED容器是什么意思?

    我有点困惑docker容器的状态 尤其是与状态为已创建 我知道当容器正在运行状态如下所示 root labadmin VirtualBox RAGHU DOCKER docker ps CONTAINER ID IMAGE COMMAND
  • JDK 文档是语言规范的一部分吗?

    只有一名官员Java语言规范 https docs oracle com javase specs jls se8 html index html所有 Java 实现都必须遵守它 API文档怎么样 所有Java实现都需要遵守吗这个版本 ht
  • 如何找到Selenium WebDriver的XPath? [复制]

    这个问题在这里已经有答案了 我想知道是否可以获取Web元素的XPATH test driver find elements by css selector div menu listes ul menu menu horizontal me
  • 如何在Python中“按任意键”?

    我如何在Python中 按任意键 或抓取菜单选项 raw input 要求您按回车键 Windows msvcrt 有 getch 和 getche 有没有一种可移植的方法来使用标准库来做到这一点 try Win32 from msvcrt
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • symfony api 平台深度

    到目前为止 我们一直在 Symfony Doctrine 和 Serializer 深度方面苦苦挣扎 我希望能够使用 Symfony 提供一级深度的 JSON REST API 从而允许我直接从视图管理我的 外键 和关系逻辑 GET peo