我需要创建一个GETendpoint来返回通过超文本传输协议客户端从另一个应用程序获取的资源,而不是基于实体。我获取的资源是一个数组:
[
"id" => 1234
"first_name" => ""
"last_name" => ""
"email" => ""
"country" => 1
"country_code" => 93
"phone_number" => "3434343"
"nationality" => "AF"
"professional_industry" => "Health Care"
"job_title" => "Medical Doctor - General Practitioner"
"specialisation" => "No specialisation"
"career_length_month" => 1
"career_length_year" => 1
]
然后我需要查询数据库以获取一些数据以添加到资源数组中。
所以我在src/控制器/MyController.php
中创建了它:
/**
* @Route("/api/v1/get-profile", name="get_profile")
* @return JsonResponse
*/
public function getMemberInfo(): JsonResponse
{
// step 1 : use http client to request data from another application
// step 2 : query DB to fetch some data and add to data array
return new JsonResponse($data, Response::HTTP_OK);
}
但是现在,我希望我的api返回json api响应格式:https://jsonapi.org/.
基于实体的资源,api平台完全支持。我不需要做太多。我只是在实体类中添加“key”#[Api资源]
并配置一些东西。然后我有一个json api格式的api,很容易:
{
"data": {
"id": "",
"type": "",
"attributes": {}
}
}
但是如果资源不是基于实体的呢?是否有任何api平台的内置功能我可以使用,或者我必须自己做一个转换器?
最好是可以创建自定义数据提供程序。此自定义数据提供程序将负责从外部源提取数据。然后,API平台将能够像常规实体一样使用它。
您需要重写OpenAPI规范如何在留档中描述:https://api-platform.com/docs/core/openapi/#overriding-the-openapi-specification
然后,在新的类中,您必须添加您需要的模式定义,添加新的PathItem实例,每个PathItem需要新的操作实例,等等。
很抱歉没有粘贴示例,它需要这么多代码。我在一个项目中以这种方式工作,但目前还不公开。
我希望我能阻止你。
根据文档,默认情况下,api平台将加载相关资源。 但是在默认配置中,我对具有关系的资源的所有查询(主要是典型的关系)都用对象IRI而不是序列化对象填充这些属性。 例如,对于该实体: 然后我们就有了相应的: 我已经在关系上设置了,即使理论上不需要。我的配置是默认的,但是以防万一我真的在我的中写了这个: 的结果确认应用了正确的配置: 然而结果会是这样的: “boostLead”、“channel”和“
启动程序(启动TomCat)后,模式中没有创建表,但是必须自动创建表“player”。 我检查了Hibernate配置,但找不到问题所在。我尝试将hbm2ddl.auto更改为hibernate.hbm2ddl.auto(也包括创建、创建-删除等),但没有帮助。 如果有什么想法,请告诉我。谢了。 实体类: 存储库类: Hibernate配置: pom.xml的完整项目代码可通过链接:https:/
问题内容: 使用Jhipster和Postgresql,我创建了一个实体“ Customer”。当我使用Angular UI将数据添加到该实体或将其添加到API时,可以使用UI上的搜索表单来搜索此数据。 但是,当我直接在数据库中插入数据时,即使在应用程序重新启动后也无法搜索数据。搜索仍然(仅)对通过UI添加的数据有效。 我是Elasticsearch的新手,不知道在后端插入数据并将其提供给Elas
我有一个包含 Serie 对象的集合的 Chart 对象,这些 Serie 对象包含数据对象的集合。我希望根据它们在各自集合中的位置来标识 REST API 来识别 Serie 和 Data 对象,而不是要求 REST API 通过代理主键来识别 Serie 和 Data 对象。 数据库模式如下。最初我考虑使serie的和data的复合主键,但是,Doctrine只能对一个级别(即Serie)这样
我们是一个电子商务网站,希望创建API给我们的客户提供一个接口,通过这个API发送产品相关信息。我们目前需要3种类型的产品信息: 基本细节:如价格、颜色等 映像:产品映像 评论:该产品的评论 方法1:允许客户端通过单个API发送所有信息。 方法2:为所有子资源创建不同的API。 方法3:使用层次URI为所有子资源创建不同的API。
我对平台API有问题(https://api-platform.com/)当我有一个从另一个实体继承的实体时。例如,从User实体继承的Worker实体。当我转到Platform API文档时,所有Worker属性都显示在User类中 这是一个比解释更好的模式。这是我的两个实体和问题文档的结果 这就是问题所在。我们看到 Worker 子类的属性出现在 User 类的模型中。并且当我测试发送 POS