api-platform.com 相关问题

此标记应用于与API平台相关的所有问题,这是一个用于创建API优先Web项目的框架。 API平台包含一组工具,可轻松构建功能齐全的超媒体API(现代格式,文档,授权,过滤,订购,缓存,测试......)以及支撑客户端应用程序。它建立在Symfony组件(PHP)和React(JavaScript)之上。

如何创建不基于实体API平台的资源API?

我需要创建一个 GET 端点来返回通过 http 客户端从另一个应用程序获取的资源,而不是基于实体。我获取的资源是一个数组: [ “id”=> 1...

回答 2 投票 0

在 APi 平台中关闭端点的复数形式

在 Symfony 5 项目中,我们使用 APi 平台生成 REST API。 其中一个实体类称为 FarmMetadata。 在 Symfony 5 项目中,我们使用 APi 平台生成 REST API。 其中一个实体类称为 FarmMetadata。 <?php namespace App\Entity; use ApiPlatform\Core\Annotation\ApiResource; use Doctrine\ORM\Mapping as ORM; /** * @ApiResource() * @ORM\Table(... some settings ...) * @ORM\Entity */ class FarmMetadata { // properties and methods } 当我运行 php bin/console debug:router 时,它会显示此资源的以下路线: api_farm_metadatas_get_collection GET ANY ANY /api/farm_metadatas.{_format} api_farm_metadatas_post_collection POST ANY ANY /api/farm_metadatas.{_format} api_farm_metadatas_get_item GET ANY ANY /api/farm_metadatas/{id}.{_format} api_farm_metadatas_delete_item DELETE ANY ANY /api/farm_metadatas/{id}.{_format} api_farm_metadatas_put_item PUT ANY ANY /api/farm_metadatas/{id}.{_format} api_farm_metadatas_patch_item PATCH ANY ANY /api/farm_metadatas/{id}.{_format} 但是“元数据”这个词已经是复数了。不存在元数据这样的东西。如何关闭此端点的复数形式? 我尝试使用shortName: * @ApiResource( * shortName="FarmMetadata" // also "farm_metadata" * ) 但它不会改变输出。 如果我使用: * @ApiResource( * shortName="Metadata" * ) 然后更改路线名称和路径: api_metadata_get_collection GET ANY ANY /api/metadata.{_format} api_metadata_post_collection POST ANY ANY /api/metadata.{_format} api_metadata_get_item GET ANY ANY /api/metadata/{id}.{_format} api_metadata_delete_item DELETE ANY ANY /api/metadata/{id}.{_format} api_metadata_put_item PUT ANY ANY /api/metadata/{id}.{_format} api_metadata_patch_item PATCH ANY ANY /api/metadata/{id}.{_format} 但这不是我想要的。 我知道我可以为每个操作声明一条路径,但这会损害 DRY 原则。 我怎样才能达到预期的行为? 您可以在每个操作中使用“路径”选项。 参见 https://api-platform.com/docs/core/operations/#configuring-operations 例如 * shortName="Metadata", * itemOperations={ * "get"={ * "path"="/metadata/{id}" 通过操作路径命名,您可以轻松地随心所欲。 将配置添加到config/packages/api_platform.yaml,将类和路径更改为您想要的名称和位置: api_platform: ... path_segment_name_generator: App\InfraStructure\ApiPlatform\Core\SingularPathSegmentNameGenerator 创建实现PathSegmentNameGeneratorInterface的必要类: <?php declare(strict_types=1); namespace App\InfraStructure\ApiPlatform\Core; use ApiPlatform\Core\Operation\PathSegmentNameGeneratorInterface; use ApiPlatform\Core\Util\Inflector; final class SingularPathSegmentNameGenerator implements PathSegmentNameGeneratorInterface { public function getSegmentName(string $name, bool $collection = true): string { return Inflector::tableize($name); } } 请参阅链接文档了解另一个示例,例如 return strtolower(preg_replace('~(?<=\\w)([A-Z])~', '-$1', $string)); 我认为这不可能通过配置实现:这些路由是在私有方法ApiPlatform\Core\Bridge\Symfony\Routing\ApiLoader::addRoute中构建的(至少在我正在使用的 v2.6 中),并且这使用对复数器的静态调用 - 所以:装饰ApiLoader 不容易实现(因为 addRoute 方法是私有的),并且不可能交换生成路由的方式(由于使用静态方法调用)。 看起来您需要在他们的错误跟踪器中打开功能请求票...

回答 3 投票 0

ApiPlatform 出现 NotFoundHttpException:自定义 URL 参数被视为标识符

我在使用 ApiPlatform 的 Symfony 项目中遇到了问题。每当我在 URL 中包含自定义参数时,我都会遇到 NotFoundHttpException 并显示消息“无效的 URI

回答 1 投票 0

有什么好的方法可以从API平台导出Excel吗?

我有一个使用自定义API平台资源的Symfony项目(API平台版本是3.2)。 有所有需要的过滤器、状态提供者等。将 JSON 响应返回到我想要的前端...

回答 1 投票 0

ApiPaltform - 恢复软删除的元素

我正在使用 ApiPlatform 和 Symfony5 我已经在实体用户上实现了软删除 该实体已正确软删除,我仍然想显示某些角色的已删除用户,所以我正在尝试

回答 2 投票 0

Symfony 6 + API 平台 - 在发布新实体时更新现有实体

我有以下用例: 在我的用户表中,我有一个已被软删除的用户,并且对电子邮件字段有唯一的约束。 用户使用同一电子邮件再次注册。通过 API

回答 1 投票 0

从链接类型 API 响应中检索数据而无需手动编写多个请求的确切方法是什么?

我有一个正在开发的项目,我在前端使用 React,后端是在 Symfony + api 平台中构建的。 我的问题如下: API 调用返回的响应格式为...

回答 1 投票 0

api平台中的login_check路由不起作用

你好,我生成了一个使用 api 平台和 jwt 登录的路由,但它不起作用,我收到此错误“无法找到路径“/api/login_check”的控制器。路由错误

回答 1 投票 0

SQLSTATE[HY000] [2002] 在 - api 平台和 symfony 6 中没有这样的文件或目录

我正在使用 symfony 6 和 PHP 8 运行 docker 项目,但收到错误: “驱动程序中发生异常:SQLSTATE[HY000] [2002] 没有这样的 中的文件或目录。 (这是

回答 2 投票 0

根据 OpenAPI 定义在 Swagger UI 中使用 PKCE 进行授权代码流

我正在为单页应用程序 (SPA) 构建 Web API,其中用户使用带有 PKCE 的授权代码流通过第三方授权服务器进行身份验证。该 API 已记录在案...

回答 1 投票 0

API 平台基于 graphql 的游标分页

在 mongodb + graphql api 上工作,似乎无论我如何配置分页,它总是为每个边返回相同的光标。最重要的是,我尝试改变

回答 1 投票 0

Symfony ApiPlatform 自定义 DELETE 操作触发默认删除事件

我对 api 平台自定义路由功能有疑问。当尝试使用 DELETE 方法实现自定义路由时,会为 http 请求中的对象触发事件系统(由 pa...

回答 2 投票 0

Symfony 防止使用监听器对实体进行操作

我正在尝试实现软删除。是的,我知道盖德莫。 我正在尝试实现以下逻辑,以设置软删除值而不是删除实体: #[AsDoctrineListener(事件::

回答 1 投票 0

在文档中隐藏特定角色的端点

我有一个具有多个角色的 API,我想在文档和 /api 入口点中隐藏特定角色的一些端点。有没有简单的方法可以做到这一点? 我发现这个问题 如何隐藏

回答 1 投票 0

/api 在 symfony 应用程序中没有很好地发挥作用

我创建了symfony6项目并尝试应用api模式。当我启动 http://127.0.0.1:8000/api 时,我收到一个带有此错误的 json 响应“在渲染模板期间引发异常...

回答 1 投票 0

使用非 ID 字段作为 Doctrine 实体上的 ApiResource 标识符

我正在使用 API Platform 3.2 和 Symfony 7.0。 我有一个 Doctrine 实体 SimplePoll,它扩展了一个抽象父类 Poll。 SimplePoll 是一个 ApiResource。它的 ID 是一个自动生成的 $id 字段,w...

回答 1 投票 0

从 API 平台 Swagger/OpenAPI 文档输出中删除一些模式/模型

API-Platform 将生成 Swagger/OpenAPI 路由文档,然后生成下面的架构文档(又名模型)(文档将它们显示为“模型”,但当前版本如 2.7 s...

回答 2 投票 0

Symfony 禁用 ApiPlatform ApiTestCase 中的异常输出

我正在尝试使用 ApiPlatform\Symfony\Bundle\Test\ApiTestCase 在 php Symfony 框架中为控制器编写 API 测试,但是当我在控制器中抛出异常(违反约束)时,我...

回答 1 投票 0

订阅者在 get 方法上添加过滤器

我想知道是否可以在订阅者的某个 GET 调用上自动添加过滤器? 我正在使用 api_platform 5.4。 我已经使用 POST 方法的订阅者来添加默认值...

回答 2 投票 0

api_platform 产生错误“没有找到 uri [/index/_doc/_search] 和方法 [POST] 的处理程序”

当尝试通过 fos_elastica-bundle (v6.0.0) 将 elasticsearch (v7.9.3) 实现到我的 Symfony (v5.3.10) - App with api_platform (v2.6.6) 中时,我不断收到此错误: “{”错误&quo...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.