REST(Representational State Transfer)是一种用于分布式超媒体系统(如万维网)的软件架构。由于客户端与服务器之间的内在解耦,来自异构系统之间具有统一接口,因此它相对于诸如SOAP的RPC架构而言越来越受欢迎。
在 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 方法是私有的),并且不可能交换生成路由的方式(由于使用静态方法调用)。 看起来您需要在他们的错误跟踪器中打开功能请求票...
验证 Openapi 3.0 Spring Boot RESTful API 中的 URL 参数?
在我的 openapi 规范中,我为特定资源路径指定 URL 参数,如下所示: 路径: /一些/路径: 得到: 摘要:一些总结 参数: 名称:有用参数
Talend 上传文件到 SharePoint (graphAPI) 文档库,文件类型未知
我有一个使用 Talend 的项目,其中 Oracle Blob 被解码为文件。 我需要将文件“放入”SharePoint 文档库中。我已经在邮递员以及 pu 中测试了所有驱动器 ID 等...
PUT 请求使用邮递员工作但不使用 java、spring boot
我正在尝试在我的 Spring Boot 项目中进行 API 调用。 PUT 请求使用邮递员工作正常,我收到 204 状态代码(无内容)。而 JAVA 代码抛出 500 内部
我正在开发一个应用程序。它使用改造从 API 获取列表(国家和城市列表)。在我的主要活动中,我有一辆房车,它是主要房车,还显示国家/地区列表。我的国家列表项目...
我的服务器中有一个 REST API,其中 List 操作(应使用 GET 方法实现)从客户端接收多个参数: 当前页面 行数 一条文字...
我创建了小型 Rest API 应用程序并尝试使用 Postman 对其进行测试,但一无所获。 这是代码片段: -动物 命名空间 VeterinaryClinicShelter.Models; 公开课动物 { 公共我...
我创建了小型 Rest API 应用程序并尝试使用 Postman 对其进行测试,但一无所获。 这是代码片段: -动物 命名空间 VeterinaryClinicShelter.Models; 公开课动物 { 公共我...
Spring Security 中的自定义 LoginController 并使用 Angular 发布
我正在尝试创建自己的 LoginController,以便我可以更仔细地观察数据流,但要么是我的 post 方法错误,要么是我的控制器缺少某些内容。 每当我尝试发送登录请求时...
我一直在尝试使用 fetch 发送 JSON 数据,但后端收到一个空对象。 在我的客户端 JS 中我有 const 用户 =“公司1”; const 用户名 = "muneeb"; 常量数据...
对特定 Laravel 10 API 端点的 POST 请求意外执行 Web 路由而不是 api.php 路由
我正在使用 Laravel 10 开发 REST API 项目。尽管已为端点(/dp 和 /dj)正确配置了 Laravel API 路由,但对这两个端点的 POST 请求意外地执行了 Web
设置后登录出现错误错误请求,需要在 keycloak 中使用值更新密码进行操作
我使用下面的代码创建了一个用户,然后使用API登录,响应返回错误请求!我如何才能捕获类似以下内容的响应:用户有巨大的需要具有值 Update Pass 的操作? 谢谢...
laravel 10 API 端点(/dp 和 /dj)的 POST 意外执行 Web 路由而不是 API 路由,而其他 API 端点功能正常
我正在使用 Laravel 10 开发一个 REST API 项目,尽管已经为端点(/dp 和 /dj)的 Laravel API 路由进行了正确配置,但对这两个端点的 POST 请求意外地发生了...
在工作中,每次处理创建 CRUD api 时,我总是返回完整的对象以进行创建和更新。 现在我正在开发一个个人项目,我想知道这是否是一个好主意,而不是
STRAPI RestAPI - 如何将图像上传到组件中的媒体字段? 4.2
我对 Strapi v4 有一个很大的疑问,我知道很多人都在问。但我花了4个小时上网,发现了很多案例,但没有一个解决或者只是
使用 Azure DevOps REST API 删除工作项附件
可以使用 REST API 删除拉取请求附件: https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pull-request-attachments/delete?view=azure-devops-rest-7.0 但我没有看到...
我对 WP-REST API 和 Wordpress 总体来说是新手。我尝试使用端点 wp-json/wp/v2/posts 获取帖子列表,但收到经典的 403 错误。 我想问一下有没有办法禁用
NestJS AuthGuard 可处理 GraphQL 和 REST
根据文档,为了使用 AuthGuard 进行 GraphQL 解析器的身份验证,我们必须重写 getRequest 方法,如下所示: getRequest(上下文:ExecutionContext){ 常量 ctx =
ADOS .NET:将 SOAP 方法交换为 REST 等效方法
我目前正在将 SOAP 代码交换为 ADOS OnPremise 应用程序的 REST (6.0) 代码。 私有无效SetIntegratedStatusForBranch(ChangesetModel变更集,分支changesetBranch,列表
我正在 Easy Project 中创建 webhook,我尝试为一个组创建它,但我需要找到组的实体类型,我尝试了组、组、组、组和几个,但什么也没有,它只是