我是 API 平台的新手。我认为这很棒,但我找不到任何示例如何创建不基于任何实体的自定义端点。有很多基于实体的示例,通常都是关于 CRUD 的。但是自定义操作呢?
我需要使用一些与任何实体无关的自定义参数通过数据库创建自定义搜索。
例如。我想接收这样的 POST 请求:
{
"from": "Paris",
"to": "Berlin"
}
该数据未保存到数据库中,并且我没有它的实体。
在我收到这些数据后,应该有很多业务逻辑,包括通过大量数据库表进行数据库查询以及从外部源获取数据。
然后,在业务逻辑完成后,我想返回结果,该结果也是自定义的且与任何实体无关。
例如。
{
"flights": [/* a lot of json data*/],
"airports": [/* a lot of json data*/],
"cities": [/* a lot of json data*/],
.......
}
所以,我想我并不是唯一一个做类似事情的人。但我真的找不到解决方案或最佳实践来做到这一点。
在文档中,我发现了至少三种方法,但我无法实现其中任何一种。
最好的,我想最适合我的是使用自定义操作和控制器。但文档说不推荐这样做。另外,我认为我应该使用 DTO 进行请求和响应,但对于这种方法,我不确定是否可以使用它们。
我发现它使用数据传输对象的第二个方法,但这种方法需要一个实体。根据文档,我应该使用 DTO 和 DataTransformers 将 DTO 转换为实体。但我不需要实体,我不需要将它保存到数据库。我想自己处理收到的 DTO。
第三个我猜它是使用数据提供者,但我不确定它是否适合我的要求。
因此,主要问题是我应该使用哪种方法或最佳实践来实现与任何实体无关的自定义操作。使用 DTO 进行请求和响应会非常有用。