首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用API的DDD和UUID :在客户端还是服务器端生成?

使用API的DDD和UUID :在客户端还是服务器端生成?
EN

Stack Overflow用户
提问于 2021-06-22 16:03:56
回答 1查看 297关注 0票数 0

在我的工作中,我们目前正在为web应用程序中的uuid生成方法而奋斗。我们使用DDD,我们的持久存储是我们拥有的远程API。

下面是我的代码的简化示例:

代码语言:javascript
运行
复制
class HireFooHandler() {
    
    private $repository;
    private $mailer;

    public function __construct(FooRepository $repository, HiringMailer $mailer, ... ) {
        $this->repository = $repository; //behind the repository, there are api calls
        $this->mailer = $mailer;
        ...
    }
    
    public function handle(HireFooCommand $command) {
        try {
            $foo = new Foo($command->uuid, $command->baz, ...);

            $this->repository->hire($foo);

            $this->mailer->sendHiredMail($foo);
            
            ...
        } catch(...) {
            ...
        } 
    }
}

我的一些同事不适合生成应用程序并将uuid发送到api。他们更喜欢让服务器端处理uuid生成,如果在这个示例中保存了"foo“,则将生成的uuid发回给响应中的应用程序。主要的论点是,api也是公开的,他们不希望客户端生成uuid。

另一方面,从我的应用程序和编码的角度来看,由于我的实体Foo不应该处于无效状态,要创建它,我必须提供uuid并因此从客户端生成它,这是可以的。

,所以我在这里,挣扎于此,不知道什么是最好的方法,以及在哪里生成我的uuid?客户端?服务器端?

我建议它们通过在post端点中添加一个可以验证的uuid可选字段来使api更加灵活。因此,Api可以从客户端接收一个uuid,如果没有,则生成它自己的uuid。但我不确定这是个好做法。

如果有人有一些输入,我很乐意读到:)

EN

回答 1

Stack Overflow用户

发布于 2021-09-13 18:51:47

您应该理解为什么在客户端生成uuid很好,对我来说最大的好处是允许做异步或复杂的事情。例如,客户端可以向服务器发送请求,而无需等待响应,并开始使用生成的uuid,这种方法允许客户机在开始使用uuid而不是dd时从uuid和php应用程序中获得很多好处,因为您不再需要并且可以发送事件。此外,还有一种中间解决方案,在创建命令时在控制器中生成uuid。还有更有趣的概念:命令从未失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68087043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档