python - Django 中基于接口(interface)和 API 的编程

标签 python django api interface

我在网上搜索了这个问题。已经有一篇文章具有相同的标题,但没有真正描述实际的问题。所以我还没有找到合适的解决方案。

我正在开发非常大的项目。因此,绝对有必要将其拆分为多个层或组件或任何您想要的名称。

每一层都公开一些功能。对于每一层,如何实现并不重要(因为这在大型项目中经常发生变化),但重要的是我们如何调用功能以及它返回给我们的内容 => 合约!

如果我们有两层,一层涉及 TransactionService,另一层涉及 BankService,则 BankService 比 TransactionService 高一层,并且将使用 transactionservice。 transactionService 只会执行一个事务:

TransactionVO doTransaction(clientFromVO, clientToVO);

另一个层可以做额外的事情.. TransactionVO 不是模型类!它们是值对象,因此服务的实现不会暴露给层外。 在java中我们可以通过以下方式实现:

public interface TransactionService {
   TransactionVO doTransaction(clientFromVO, clientToVO);
}

实现如下:

public class TransactionServiceImpl {
   public TransactionVO doTransaction(clientFromVO, clientToVO) { 
     // implementation 
   }
}

因为我们预先定义了接口(interface),所以我们有一个契约,其中规定了每个服务的外观(如果没有实际的实现,则 TransactionServiceImpl 不需要存在)。

因此,2 个团队可以在每一层同时工作,并且可以模拟实现。 我想知道如何在 Django 中实现这一点!为每一层创建 REST api 根本就没有完成(开销太大,性能问题..)那么对于那些有大型项目经验的人来说呢?

最佳答案

Python 不具有与 Java 相同意义上的“接口(interface)”。相反,存在“鸭子类型”——其中“接口(interface)”是由暴露的行为暗示的。此问题 ( How to handle "duck typing" in Python? ) 中的答案应该可以解决与此相关的一些问题。

对于像Python这样的动态语言,如果你想在实现之前定义一个类的行为,你需要提前编写一个测试用例。如果您不熟悉 Python 中的测试驱动开发,您可以 start by reading this.

有许多可用于 Python 的模拟库。 This就是一个例子。

关于python - Django 中基于接口(interface)和 API 的编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124456/

相关文章:

java - 用于检索 j2se 元素的 JNLP API

python - 训练价格预测模型

python - 在 python 中编码 : what type is the variable

java - 如何在JAVA中使用API​​创建新用户

linux - TPM/TSS Linux API 替代方案

python - Django 应用程序中模型的国际化

python - 给定输入值时从列表列表中返回列表

python - osx Python 2.7 给出 "E ValueError: bad marshal data (unknown type code)"

python - 在迁移到 Django 1.6 时摆脱 get_profile()

python - mod_WSGI 是否取代了 apache 正在做的事情以及我如何使 wsgi 仅在特定路径下工作