首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Api平台-从外部API返回数据

Api平台-从外部API返回数据
EN

Stack Overflow用户
提问于 2020-02-24 23:54:23
回答 1查看 260关注 0票数 0

我目前正在使用API平台在Elasticsearch中显示一些数据。这很好用,但我现在有了另一个我正在考虑的特性。

我的应用程序需要处理第三方API,该API需要访问端点并返回一些数据。

在我的应用程序中,我希望能够点击(/api/logistics/{action} -其中操作是一个端点,例如登录),然后点击我的应用程序层并返回数据(第三方可以重命名)

对第三方的API调用没有问题,但我不确定如何显示响应。

我见过https://api-platform.com/docs/core/data-providers/,它看起来像是我可以创建一个自定义响应。

我是否仍然需要创建一个实体/模型并使用使用我的数据提供程序的控制器来配置@ApiResource()

如果是这样,那么我需要在我的注释中添加什么,因为我没有id标识符

我是API平台的新手,以前也没有使用过数据提供程序功能

我不会存储来自第三方API的数据,只是做一个HTTP调用,检索响应,并希望通过Api平台显示它

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-11-06 21:36:00

你对数据提供者的看法是正确的。但正如文档页面General Design Considerations所述,“您必须编写一个简单的老PHP对象(POPO)来表示端点的输入和输出。这是一个用@ApiResource注解标记的类。这个类不必与Doctrine ORM或任何其他持久性系统进行映射。”

所以不需要,它不需要是一个实体,但是必须有一个标有@ApiResource注解的类(但是把它放在实体文件夹中可能有助于让@ApiResource()标签工作-或者在api/config/package/api_platform.yaml中添加你的类的文件夹)。

对于一个"get“端点,你的POPO需要一个id。poperty或者如果只有一个getter,getter -必须用@ApiProperty(identifier=true)标记。通常,最简单的方法是从外部api调用的响应中内爆/编码一些字符串,这些字符串对于响应是唯一的,不会改变。您的数据提供程序必须分解/解码id,并使用组件进行外部api调用。

对于"post“操作,你需要一个datapersister而不是一个数据提供者。Apip将实例化和填充您的POPO,并将其传递给datapersister,从那里您可以调用外部api并返回一个对象作为结果。如果您的对象不是POPO的同一类型,您应该指定" output "= TheOutputClass ::class,或者将操作放在输出类上并指定"input"= TheInputClass ::class (用实际的类名替换TheOutputClass或TheInputClass)

对于"put“和"patch”,你需要一个数据提供者,一个数据姐妹和一个id。它们可以有不同的输入和输出类,请参阅有关DTO的文档。

带有"get“方法的集合操作可能看起来很方便,因为您可以向它传递任何查询字符串,但您的CollectionDataProvider必须返回一个迭代值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60379585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档