【发布时间】:2012-11-16 04:24:06
【问题描述】:
我是 Django REST 框架的初学者,需要您的建议。我正在开发一个网络服务。该服务必须为其他服务提供 REST 接口。我需要实现的 REST 接口不能直接使用我的模型(我的意思是获取、放置、发布、删除操作)。相反,它为其他服务提供了一些计算结果。根据请求,我的服务会进行一些计算并仅返回结果(不将结果存储在自己的数据库中)。
以下是我对如何实现 REST 接口的理解。纠正我,如果我错了。
- 创建进行计算的类。将其命名为“CalcClass”。 CalcClass 在其工作中使用模型。
- 计算所需的参数被传递给构造函数。
- 实现计算操作。它将结果作为“ResultClass”返回。
- 创建 ResultClass。
- 源自对象。
- 它只有包含计算结果的属性。
- 计算结果的一部分表示为元组的元组。据我了解,进一步序列化为这些结果实现一个单独的类并将这些对象的列表添加到 ResultClass 会更好。
- 为 ResultClass 创建序列化程序。
- 从序列化程序派生。序列化程序。
- 计算结果是只读的,因此主要使用 Field 类作为字段,而不是专门的类,例如 IntegerField。
- 我不应该在 ResultClass 和 Serializer 上实现 save() 方法,因为我不打算存储结果(我只想在请求时返回它们)。
- 用于嵌套结果的 Impl 序列化程序(记住上面提到的元组的元组)。
- 创建视图以返回计算结果。
- 从 APIView 派生。
- 只需要get()。
- 在 get() 中,使用从请求中检索到的参数创建 CalcClass,调用其 calc(),获取 ResultClass,创建 Serializer 并将 ResultClass 传递给它,返回 Response(serializer.data)。
- 网址
- 在我的例子中没有 api root。我应该只有 URL 来获得各种计算结果(使用 diff 参数计算)。
- 为api浏览添加调用format_suffix_patterns。
我错过了什么吗?该方法总体上是否正确?
【问题讨论】:
-
这种方法是正确的,对我来说实际上看起来比接受的答案更优雅(结果数据封装在可重用的结果类型中)。但归根结底,这主要是个人喜好问题,两种方法都可以。
标签: django rest django-rest-framework