Joh*_*cos 5 django django-models webhooks django-rest-framework
我正在使用 Django Rest Framework,它与外部服务集成。每当在外部服务中创建新任务时,我都会使用端点接收来自 Webhook 的回调。
当回调请求到来时,我的代码需要创建至少一个对象。但可能需要从多个不同的模型创建多个对象。例如,如果创建了一个新任务,则它可能是由新用户创建的,其中我还需要创建一个新的用户对象来反映这一点。
总共最多可以添加 5 个附加对象作为副作用。我知道可以在多个不同的地方添加此逻辑(例如服务层、序列化器、模型、管理器、视图)。但所有这些似乎都存在问题。
以前有人处理过这个问题吗?如果是这样,你是如何解决的?
首先,了解 RPC 风格的 API 和 RESTful API 之间的区别很重要。简而言之,您可以将 RPC API 想象为“方法”,即“操作”,而 RESTful API 则代表模型的状态。
例如,假设我们要创建一个端点来处理用户注册。
/api/register
. 一个可以做 X 件事的寄存器函数。/api/users
. 不是一个操作,而只是一个端点,它为我们提供了现有用户的状态。GET 请求将列出用户,POST 请求将创建新用户。话虽如此,可能更清楚的是,一般来说,创建执行 X 个操作的端点可能不是很“安静”,并且使用专门名为“Django REST Framework”的框架可能不是正确的选择。
所以在你的具体情况下。我建议您避免创建充当方法的端点,而是将它们视为它们所代表的资源。这意味着,如果您需要创建新用户,则向用户端点发出请求,然后如果您需要使用该用户创建新文章,则向文章端点发出第二个请求。
我认为如果你确实想要副作用,应该使用信号来管理它们。例如,假设您想使用联系表单发送电子邮件。/api/send_email
您不需要使用端点,而是创建一个/api/messages/
代表Message
模型的端点,然后在创建新消息时使用信号发送电子邮件。
通过这种方式,它仍然意味着 API 端点本身仅代表模型的状态,而修改状态(在创建新消息时发送消息)的副作用则转移到信号的责任中。
归档时间: |
|
查看次数: |
707 次 |
最近记录: |