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