gpt4 book ai didi

c# - OData 是公开非 CRUD API 的好方法吗?

转载 作者:行者123 更新时间:2023-11-30 12:59:44 25 4
gpt4 key购买 nike

我正在从事一个项目,这是我们公司首次涉足领域驱动开发。

我们的 Web API 最初只是简单地提供 CRUD 操作,并且该项目公开了 OData Controller ,但我不确定这是否仍然是一个好主意。

OData 是公开非 CRUD API 的好方法吗?

更多信息:最初我们的 web api 基本上暴露了 CRUD 功能。要创建新用户,您只需创建一个并将其发布到服务即可。例如,要更改地址,您将获得用户实体的副本,进行更改,然后执行更新操作。基本的 OData 内容。

除了提供查询支持外,OData 还以一种易于使用的方式公开了服务,因此它可以作为服务引用添加到其他项目并通过代理访问。

自从我们转向 DDD 方法后,情况发生了显着变化。我们的 Web API 现在只是许多独立子域服务的网关。我们不再提供 CRUD 操作或直接访问实体,而是通过服务调用来操作实体。消费者必须生成一个 CreateUserBindingModel 并将其发送到 User/Create 服务,然后让该服务生成实体,而不是通过 Put 请求创建一个 User 实体并将其发送到 User 服务。更改地址是通过 ChangeAddress(ChangeAddressBindingModel model) 方法完成的,而不是仅仅更新整个对象。查询更有针对性,很少返回整个域对象。

当我们不再提供 CRUD 操作时,继续使用 OData 作为我们 Web API 的基础是不是一个坏主意?是否有另一种方法可以像使用 OData 那样公开我们服务的详细信息?我知道 WCF 服务提供类似的功能,但我的印象是它与 CRUD 的联系比 OData 更紧密。

最佳答案

OData 是一种面向数据的 API 规范,它是反 DDD 的。虽然它可以满足您实现 REST API 的所有要求,但它是数据处理 API 的最佳选择。我想您已经知道使用 OData 感觉就像通过 HTTP 操作数据库一样。如果您正在使用 DDD,您应该完全忘记 OData。

关于c# - OData 是公开非 CRUD API 的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com