问题标签 [api-platform.com]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
238 浏览

symfony4 - ApiPlatform + JwtAuthenticationBundle

我正在尝试在没有 FOSUserBundle 的 Symfony 4 应用程序之上使用 JwtAuthenticationBundle 配置 api 平台。

我希望能够使用 swagger 界面。

和我的安全文件:

如果我按照文档操作,我将看不到我的招摇页面,我在 /api 上有一个 401 - Bad credentials。我无法通过招摇 UI 上的“授权”按钮登录。我必须在访问控制部分替换:- { path: ^/, roles: [ ROLE_READER ] }通过- { path: ^/, roles: [ IS_AUTHENTICATED_ANONYMOUSLY ] }这样做。

我不知道我是否错过了/错过配置某些内容,或者文档中是否有错误

谢谢 !

0 投票
1 回答
3852 浏览

symfony - 无法为类型的项目生成 IRI

我实际上正在构建一个基于以下内容的 API:

  • symfony/flex:v1.0.61
  • symfony:v4.0.3
  • api 平台/api 包:v1.0.1
  • api平台/核心:v2.1.4

CRUD 操作很容易实现。然而, 自定义操作似乎并不简单。

我试图实现的自定义操作将简单地返回App\Entity\Product基于给定的$slug.

  • 路线是:/api/products/by-slugs/{slug}
  • 方法是:GET
  • 操作类型为:itemOperations

事情是这样进行的:

Product 资源的声明

ProductLoader 的声明

ProductRepository 的声明

Symfony 控制器中自定义操作的声明

快速运行以下命令返回:

路线route_product_slug很好,但我总是收到以下错误:

无法为 App\Entity\Product 类型的项目生成 IRI "

这个错误似乎是反复出现的。不过,我再次询问,因为问题似乎与我的 flex-enable symfony 4 应用程序中的路由顺序错误有关(请参阅https://github.com/api-platform/core/issues/830)。

那么,如果我使用 symfony 4 中的注释,如何设置正确的路由顺序。路由在这些文件中定义:

第一个文件:annotations.yaml

第二个文件:api_platform.yaml

这是否意味着我必须使用 YAML 文件而不是注释来配置我的所有工作,以便我可以指定路由的顺序?

谢谢

这里什么

0 投票
1 回答
679 浏览

php - API 平台:没有这样的文件或目录

我正在学习名为“在 5 分钟内使用 API 平台创建您的第一个 API”的 API 平台教程。当我运行这个命令时:

docker-compose exec app bin/console 学说:schema:update --force

我收到这些错误:

[Doctrine\DBAL\Exception\ConnectionException] 驱动发生异常:SQLSTATE[HY000] [2002] No such file or directory

[Doctrine\DBAL\Driver\PDOException] SQLSTATE[HY000] [2002] 没有这样的文件或目录

[PDOException] SQLSTATE[HY000] [2002] 没有这样的文件或目录

当我运行时,实体似乎已正确生成:

docker-compose exec 应用程序箱/控制台原则:生成:实体 AppBundle

有人可以帮忙吗?

0 投票
1 回答
1570 浏览

api - 如何使用 api-platform 构建 GraphQL API?

当我进入api-platform 网站时,我看到了“REST 和 GraphQL 框架来构建现代 API 驱动项目”。但是我没有找到任何解释如何在 api-platform 中生成 GraphQL API 的文档。任何人都可以确认我是否可能以及如何做到这一点?

0 投票
1 回答
1066 浏览

api - 自定义操作在声明为集合时有效,但在声明为项目时无效

我正在尝试创建自定义操作。它应该返回Product给定的资源slug。要做到这一点,

声明为项目的自定义操作

它总是返回这个错误:

但是,如果我将它声明为一个集合,它就可以完美地工作。

声明为集合的自定义操作

那么,有什么问题吗??

谢谢,

0 投票
1 回答
2593 浏览

php - API 平台:无法在 MySQL 中使用 json 数据类型

我是 API 平台的新手,并试图获取一个 json 数据属性以作为 json 对象持久保存到 MySQL。我查看了 API 平台文档并搜索了答案,但没有找到任何答案。

我的设置:

MySQL 列定义为:

我定义了一个“MyEntity”PHP 对象,json 属性描述如下:

现在,当打开显示 MyEntity 的默认界面的 URL 并执行 POST 以使用此 json-ld 创建它时(简化以省略其他列):

我收到 400 错误请求错误

我转义了双引号(这对我来说似乎很奇怪,因为它是描述另一个 json 对象的 json 本身,所以你需要这样做),如下所示:

并再次执行 POST:

我收到 400 Bad Request Error 和不同的内部错误:

所以看起来 API 平台无法识别 JSON 数据类型,并且期待它的自定义实体......对我来说似乎不正确。

我还查看了学说的类型,据我了解,API 平台使用并找到了以下信息:

一些供应商拥有原生 JSON 类型,Doctrine 将尽可能使用它,否则会默默地回退到供应商的文本类型以确保最有效的存储要求。如果供应商没有原生 JSON 类型,则此类型需要 SQL 列注释提示,以便可以从数据库对其进行逆向工程。Doctrine 无法在不支持列注释的供应商上正确映射回这种类型,而是会回退到文本类型。

但是由于 MySQL 确实支持 JSON 数据类型,我认为这会起作用,但显然不是。任何有关 API 平台如何使用 MYSQL 处理 JSON 数据类型的帮助将不胜感激。

0 投票
1 回答
1689 浏览

javascript - 如何在 REST API 上通过 axios 设置 POST 请求?

如何在 REST API 上通过 axios 设置 POST 请求?

标头

我看到标题不正确,但我不明白,为什么?此外,我经常遇到这样一个事实,即 axios 的文档根本不起作用。

示例获取 GET 请求,它的工作原理: axios 中的动态主机

这是获取主机 API 所必需的:

ps:这只能以这种方式工作。

  • axios 版本:例如:v0.16.2
  • 环境:例如:node v8.9.4,chrome 64.0.3282.119,Ubuntu 16.04
  • Symfony 4.0.4
  • Vue.js 2.4.2
  • Vue-axios 2.0.2
0 投票
0 回答
691 浏览

symfony - 必须为每个资源拥有一个且只有一个 Collection Data 提供者吗?

我确实需要在我的 API 中进行自定义操作,以返回给定 slug 的实体。因此,资源的操作总数为Product6(5 个是默认操作 + 1 个自定义操作)。

我按照官方文档来定义自定义操作。但令人惊讶的是,我注意到该路由api_products_get_collection正在使用该路由的集合数据提供程序api_products_slug

起初我认为这是路线顺序的问题。但是,情况并非如此,因为如下命令所示:

此外,这是我声明路线的方式:

因此,可以肯定的是,这不是与路线顺序有关的问题。

问题是:每个资源是否应该只有一个集合数据提供者?


以下是我声明自定义操作的方式。

(1) 实现 CollectionDataProviderInterface 的提供者声明

(2) 动作的定义

(3) 将自定义动作声明为服务

(4) 自定义动作的路由声明

环境

0 投票
1 回答
2239 浏览

javascript - 不要在 api 上设置 POST 请求,得到 406 Not Acceptable

不要在 api 上设置 POST 请求,得到 406 Not Acceptable。尝试使用 axios 并得到 406 错误。有人认为是 axios 问题的原因。然后我尝试使用 fetch() 并再次遇到 406 错误。

我认为没有设置标题Content-Type,当我发送 his-get 400 Bad Request 和标签预览时Unauthorized header content-type

需要你的帮助,我做错了什么?感谢大家的帮助。

  • 环境:node v8.9.4,chrome 64.0.3282.119,Ubuntu 16.04
  • axios 版本:0.16.2
  • Vue.js 2.4.2
  • Vue-axios 2.0.2
  • api平台/api包:1.0
  • Symfony 4.0.4

标头 审查

第一个示例 fetch() 代码:

第二个示例 Axios 代码:

0 投票
1 回答
1752 浏览

api-platform.com - Can’t submit data to API Platform

I have a controller through which I send data to my local environment of the api platform (which is running fine)

But unfortunately i'm getting an error in my dev.log of the api environment:

The output of form->getData():

Running the endpoint at the api platform with the same values goes fine as well.

Does anyone of you has an idea why this goes wrong?