首页
学习
活动
专区
圈层
工具
发布

使用DDD来构建你的REST API,而不是CRUD

但是,如果允许客户端执行这样的操作,您的服务API在其使用的任何底层数据存储之上,所能提供的价值其实是很小的。服务层的关键增值之一就是在基础数据之上实施业务约束,资源总是最终要被业务约束才行。...难道我们就不能添加业务约束到我们的更新方法上吗?我们以简单的银行帐户资源为例,看看会发生什么。首先,客户端不应该调用一个API,然后就把账户余额更新为他们想要的数量,这不是乱套了吗?!...它还定义了比如服务(Services),值对象(ValueObject)和存储库(Repositories)之类的术语,它们共同解决特定业务领域中的问题,或者在DDD术语中被叫做“有界上下文(Bounded...现在我们知道我们的业务操作是什么了,下面是将它们映射到REST API的一个例子: 1. POST /account – 开户 2....如果API文档记录的很好的话,例如使用Swagger来定义文档,那么每个API的限制(或约束)将变得非常明确。

2.9K50

重新定义软件工程

每个功能都有超出最初实现的成本:维护成本、文档成本和用户认知成本。经常问一下:我们真的应该这样做吗?通常,答案是否定的。...除了正在监视的度量之外,软件对用户和世界的总体影响是什么?是否有超出价值观的副作用?你如何解决这些问题,同时保持软件的有用性? API设计 你的API有用户,因此它有用户体验。...如果工作流程的认知负荷足够低,那么用户在完成一两次之后,就可以记住(不需要查找教程或文档)。 寻求与领域专家或从业者的心智模型相匹配的API。...有领域经验但没有API经验的人应该能够使用最少的文档直观地理解你的API(比如,查看几个代码示例,可用对象以及它们的签名)。 参数的含义应该是可以理解的,而不需要任何关于底层实现的上下文。...在做任何有长期影响的选择时,选择你的价值观,而不是短期的私利和短暂的情绪——比如贪婪或恐惧。认识自己的价值观是什么,让它们指引你。

41120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    智能文档处理(IDP)技术深度解析

    高价值发票触发双重审批,而职责分离规则阻止冲突。干净的发票自动发布到ERP;不匹配的发票流入争议队列。...数据根据关税代码、承运人数据库和装运记录进行交叉检查。不完整或不匹配的文档在到达清关前被标记,减少了代价高昂的延误。高风险装运触发审批,而合规文档直接通过。...对于需要可解释性的企业,这可能会限制采用。购买适用场景:当您需要快速实现价值、行业认证和覆盖常见文档类型时。...他们根据摄取、分类、提取、HITL审阅、工作流深度、平台质量和价值实现时间来评估供应商。企业应将其文档DNA映射到供应商的优势上,并通过有时间限制的试点来验证,衡量F1、首次通过率、异常率和周期时间。...成功意味着更高的F1/首次通过率、更低的异常率和单文档成本,以及稳定的可审计性。5. IDP能可靠地处理手写内容吗?我们应该有什么期望?

    19510

    Elasticsearch 中的向量搜索:设计背后的基本原理

    段会在后台定期合并在一起,以控制分段总数并限制每个分段的总体搜索时间开销。由于它们是段的一部分,因此向量也需要合并。搜索必须合并索引中所有段的top向量命中。...同样,对于删除,如果文档被标记为已删除,那么包括向量存储在内的所有数据结构都将忽略它,或者如果它们对删除之前创建的时间点视图进行操作,则它们将看到它。...通过拥有自己的 HNSW 图,该图与段相关联,并且节点由文档 ID 进行索引,Lucene 可以就如何最好地预过滤向量搜索做出有趣的决定:要么通过线性扫描与过滤器匹配的文档(如果有选择性),或者通过遍历图并仅考虑与过滤器匹配的节点作为...向量搜索与聚合、文档级安全性、字段级安全性、索引排序等兼容。包含向量的索引仍然遵循与其他索引相同的语义,包括 _refresh、_flush 和 _snapshot API。...更一般地说,与现有比较基准中的其他向量存储相比,索引时间和搜索时间开销似乎都是可控的(查找“luceneknn”行)。我们还相信,通过将向量搜索与其他功能相结合,可以释放向量搜索的许多价值。

    3.1K53

    Keras作者:给软件开发者的33条黄金法则

    每个功能都有一个超出初始实现的成本:维护成本、文档成本和用户的认知成本。应该总是问:我们真的应该这样做吗?通常,答案是否定的。...4、如果工作流的认知负载足够低,那么用户在完成一到两次工作之后,应该可以从记忆中遍历工作流(无需查找教程或文档)。 5、追求与领域专家和从业者的心理模型相匹配的API。...有领域经验但没有API经验的人应该能够使用最少的文档直观地理解你的API,主要通过查看一些代码示例,看看哪些对象可用,以及它们的签名是什么。...要实现直观的API,必须选择自然适合手边领域的数据结构——与领域专家的心理模型相匹配。 9、设计端到端工作流,而不是一组基本特性。大多数开发人员通过询问“应该提供哪些功能?让我们为它们提供配置选项。”...6、当做出任何具有长期影响的选择时,将你的价值观置于短期自我利益和短暂情绪之上——比如贪婪或恐惧。要知道你的价值观是什么,让它们来引导你。

    57140

    MockServer:让前端开发告别后端依赖的神器

    这对于接口测试来说特别有价值。如果前端发送的请求格式不对,MockServer会立即告诉你哪里出了问题。代理和转发MockServer还具备代理功能。...实际使用场景场景一:API设计阶段产品需求刚出来,后端还在设计数据库结构,前端已经可以开始搭建MockServer了!根据原型图和需求文档,前端可以先定义出接口的大致结构。...配置和API文档保持同步!...需要专门的人来维护这些配置,确保它们和真实接口保持一致。团队协作问题如果团队成员各自维护自己的MockServer配置,很容易造成混乱。需要建立规范,统一管理配置文件。...最后提醒一点:MockServer配置要和API文档保持同步,这样才能发挥最大价值。团队协作中,建议指定专人维护MockServer配置,避免各自为政造成混乱。好了,今天的分享就到这里!

    38010

    为什么说要用DDD替代CRUD来设计API

    但如果你允许客户端这么做,那么你的服务 API 就失去了应有的价值。 服务层的一个关键价值在于为底层的数据增加业务约束,因此,资源最终都需要带上业务约束。...那么,难道我们就不能给更新操作增加业务约束吗?让我们以最简单的银行账户为例。首先,不能让客户通过调用 API 来随意更新他们的账户余额。另外,账户或许需要最小余额的限制。...而对于客户端来说,它们能执行或不能执行哪些操作也是一目了然的。如果 API 具有良好的文档化,比如使用了 Swagger,那么就可以很清楚地了解到 API 都具有哪些约束。...相反,可以通过 DDD 来定义 API,包括领域对象和它们的业务操作。 如果你想看到更多关于领域对象的例子,可以参考 Amazon Web Services 的 API。...先了解一个服务的领域对象,再查看 API 参考,然后浏览服务的 API 清单。你会发现,基于这些领域对象构建的 API 在理解和使用上都更加直观。

    1.7K20

    “接口罗生门”终结者:用AI把“甩锅互怼”变成“优雅交付”

    但是,文档滞后带来的“沟通税”,往往比写文档本身高出十倍。如果我说,有一个能在30秒内把你的“屎山代码”或者“口头约定”变成一份大厂标准API文档的AI助手,你愿意试一试吗?...我为此设计了一套专门的API文档生成指令,它不是简单的文本转换,而是强制AI扮演一位拥有10年经验的API技术文档工程师。...你擅长将复杂的接口逻辑转化为清晰易懂的技术文档,让前端开发者、测试工程师和第三方集成商能够快速理解和使用API。#任务描述请根据我提供的API接口信息,生成一份专业、完整、易于理解的API文档。...API的URL路径,如"/api/v1/users/login"]-**接口描述**:[简要说明接口的功能和用途]-**请求参数**:[参数名、类型、是否必填、说明]-**返回数据**:[返回字段及其说明...不止是文档,更是“契约精神”在腾讯云开发者社区,我们见过太多项目因为文档缺失而烂尾。这套AI指令的价值,不在于帮你省了打字的时间,而在于它帮你重建了交付标准。

    18510

    微前端概述

    ②iframe内元素会被限制在文档树中,视窗宽高限制问题、弹窗类的功能只能在对应的窗口内展示; ③ iframe应用加载失败,内容发生错误主应用无法感知。    ...(通过监听url change事件,在路由变化时匹配到子应用并进行渲染),其本身没有处理样式隔离和js执行隔离。...Shadow DOM(影子DOM):一组JavaScript API,用于将封装的“影子”DOM树附加到元素(与主文档DOM分开呈现)并控制其关联的功能。...通过这种方式,可以保持元素的功能私有,这样它们就可以被脚本化和样式化,而不用担心与文档的其它部分发生冲突。...HTML templates(HTML模板):使用和元素可以编写不在呈现页面中显示的标记模板,然后它们可以作为自定义元素结构的基础被多次重用。

    2K40

    谷歌搜索秘籍泄漏:揭秘内部工程文档

    谷歌搜索内容库 API 的内部文档不慎泄露。谷歌内部的微服务体系与谷歌云平台所提供的服务相似,其已废弃的文档 AI 仓库的内部文档不小心被公开到了客户端库的代码仓库中。...泄漏的文件详细描述了 API 的各个模块,并把它们按照摘要、类型、函数和属性进行分类。...Google 员工可能会说“我们拥有它,但不使用它”,或者“你可能不了解它的含义”,或者……好吧,我说过要“限制评论”的,不是吗?让我们继续。 “我们不用点击量来排名” 这个说法现在可以彻底澄清了。...它们的工作原理类似于 WordPress 中的过滤器和操作——在内容呈现给用户之前进行调整。Twiddlers 能够调整文档的检索评分或更改其排名。很多现场实验和我们所熟知的系统都采用了这种机制。...根据文档,Mustang 系统中对于一个文档能够处理的 token 有一个最大限制,这提醒作者应优先展示最关键的内容。

    50710

    企业自动化文档处理(ADP)核心技术指南

    其价值不在于智能,而在于机械可靠性和集成强度——CFO、COO和IT买家在扩展关键任务文档工作流时所关心的属性。...死信队列隔离失败的文档供人工审查。背压机制限制摄入以避免下游过载。例如,如果在月底关账期间SAP离线,发票不会丢失——它们会排队,自动重试,并在系统恢复时保持完整性。...对CFO、COO和IT买家的商业价值只有当自动化文档处理直接关联到高管关心的成果时——成本可预测性、运营可扩展性和IT稳定性——它才具有意义。...ADP与OCR或RPA相同吗?不。OCR和RPA是赋能工具,而非端到端平台。OCR从扫描件和图像中提取文本;它不验证、路由或与核心系统集成。...它们共同形成一个混合技术栈:ADP用于稳定性和控制;IDP用于适应性;RPA仅用于API不存在的情况。FINISHED

    8310

    Istio构建者专访|什么时候可以考虑使用服务网格

    该技术为微服务体系结构带来了一个通用的网络策略和可观察层。但是,由于其巨大的开销,人们认为它只适用于具有许多团队的大型服务使用。但事实果真如此吗?什么时候采用服务网格真的有价值?...当人们讨论服务网格和API网关时,他们通常把它们放在不同的阵营中。然而,Butcher看到了一种趋势。我们认为API网关是服务网格功能的固有部分。...与其使用单独的API网关,API提供者可以在他们打算公开和扩展的微服务周围放置sidecars,并使用诸如速率限制、身份控制和请求转换等管理特性来扩展这些微服务。...从那以后,Istio维护者通过使用现成的配置、反馈文档和改进的Istio.io文档,显著改善了开发人员与服务网格的交互方式。然而,在提高可用性方面还有很多工作要做。...如果运营回报和节省的时间超过了前期的工作和持续的维护成本,服务网格可能是非常有价值的,而不仅仅是降级到企业用例中。 从逻辑上讲,进一步的影响分析对于确定盈亏平衡点至关重要。

    41310

    REST在许多API使用场景中仍然优于GraphQL

    它的炒作来自清晰且引人注目的价值主张。也就是说,它可以帮助您获取所需的确切数据并从单个请求访问多个资源,从而节省您的时间、金钱和带宽。...此外,GraphQL 通常根据请求的复杂性(例如请求的字段或对象的数量)应用速率限制。随着时间的推移,随着您在请求中增加资源,理解和遵循您的速率限制将变得更加复杂。...由于这些响应不像 REST 中那样标准化,因此它们更难计划和自动处理。 许多工程师都有构建和/或维护 REST API 集成的经验。 各种规模的公司主要使用 REST API。...Postman 非常适合测试 REST API;OpenAPI 允许您自动生成 API 文档;REST 框架(例如 Django REST Framework)是为特定 编程语言 构建的,并提供帮助您高效构建...在竞争的 API 架构能够超越——甚至匹配——REST 对提供者和消费者双方的实用性之前,REST 将继续成为首选。

    1.2K10

    好奇?!Elasticsearch 25 个必知必会的默认值

    这些默认值对于架构选型、开发实战、运维排查性能问题等都有很好的借鉴价值,虽官方文档都有详细论述,但散落在各个角度。...限制原因:为了防止搜索子句过多而占用过多的CPU和内存,导致集群性能下降 。...(2)单索引1024个最大分片数的限制是一项安全限制,可防止因资源分配问题导致集群不稳定。...除非特殊业务需求,不建议修改默认值,可以参考百度和google的实现。 (2)全部数据遍历推荐scroll API。仅支持向后翻页推荐:Search After API。...16、ES 索引动态Mapping条件下,匹配的字符串默认匹配的是? 适用场景:不提前设置Mapping精准字段的场景。 默认类型:text + keyword类型。

    7.8K20

    情绪识别AI竟「心怀鬼胎」,微软决定封杀它!

    这不是好事吗? AI识别情绪还真的不太稳定,没准儿就会人工智障... 就比如近日网上流传的这张图,董宇辉和韦神的眼神对比。 AI可以识别出「希望」和「力量」吗? 还真不好说......其中就包括可以从视频和图片中识别对象情绪的AI。 与此同时,微软将限制访问其面部识别服务Azure Face的一些功能,而且还会完全删除其他功能。...正如Azure AI的首席产品经理 Sarah Bird在博客中提到,情感识别等工具在一系列可控的可访问性场景中非常有价值。...这是目标人脸: 这是候选人脸: 从左至右依次来个编号:ABCDE matchPerson模式会返回A和B,它们与目标人脸显示的是同一个人。...正是基于隐私安全和种族歧视两大原因,才导致了越来越多科技公司「弃用」了人脸识别技术。 人脸识别真的有那么不堪吗?

    93830

    创建一个微服务?首先回答这10个问题

    测试是否包含性能验证和失败模式?所有的测试都会自动完成吗?还是人类必须参与运行并检查测试结果?以一种简单,快速和自动化的方式进行微服务测试将鼓励开发人员维护并防止“ 破窗 ”问题。...构建微服务没有多大意义,除非系统的其他组件使用它,因此理解它们如何使用微服务是至关重要的。 这些其他组件将同步或异步地与新的微服务交互吗?是否应该鼓励他们将响应缓存一段时间?什么是重试和幂等性?...定义用于升级微服务的API的边界和策略对于依赖它的组件尤其重要。例如,只允许对API的JSON模式进行附加的更改,可以有效地允许服务的持续改进,而不要求服务的使用者遵循每次升级的同步。...因此,如果新的微服务将定期升级以向其API对象添加越来越多的字段,请通过其文档明确地向服务的使用者明确说明。 最后,还需要知道,如果出现问题,如何回滚新的微服务,以及什么是“回滚有价值的标准”。...总结 虽然可能不需要对以上10个问题都有非常清楚的答案,但是考虑每个问题并意识到微服务可能具有的任何体系结构限制是很重要的。

    94231

    ChatGPT开始联网,最后的封印解除了

    最后,插件的价值可能跨越通过帮助用户处理各种新用例(从浏览产品目录到预订航班或订购食物)的现有限制。...OpenAI 正在使用这些发现来推动安全设计缓解措施以限制有风险的插件行为,并提高了它们作为用户体验的一部分运行的方式和时间透明度,此外还使用这些发现来确认逐步部署对插件的访问的决定。...问:你能告诉我哪个人 / 电影赢得了这些类别的奥斯卡奖吗? 最佳演员 最佳配乐 最佳影片 最佳男配角 然后想出一首诗将它们联系在一起。...除了为终端用户提供实用价值之外,语言和聊天模型能够进行彻底和可解释的研究,展现了具有可扩展对齐工作方面的前景。...有关已启用插件的文档作为对话上下文的一部分显示给语言模型,使模型能够根据需要调用适当的插件 API 来实现用户意图。

    1.3K60

    aic准则和bic准则_用户故事准则

    aic准则和bic准则 免责声明:这篇文章摘自内部Codurance文档,该文档用于帮助我们的学徒学习我们的工作方式。...示例故事2的任务:播放列表 假设我们正在使用前端的AngularJS和后端的Java,Dropwizard和MongoDB构建一个Web应用程序。 定义前端使用的API。...他们有不同的规则吗? 即使处理一次交易也可能是巨大的。 我们需要丰富数据吗? 我们需要向不同的监管机构报告交易吗? 交易来自单一来源吗? 它们具有相同的格式吗?...尖峰是一个有时间限制的调查活动,其结果在记录调查结果以及故事和任务的改进(包括估计)。...但是,在编写它们时,我们需要表达它们带来的业务价值。 例如保护用户数据,支持更多的并发用户,以更好的响应时间改善用户体验等。 表达技术故事的商业价值非常重要。

    2K11

    Spring认证中国教育管理中心-Spring Data MongoDB教程六

    它们中的大多数涵盖了 API 的可选或可为空的部分。 FluentMongoOperations为通用方法提供更窄的接口,MongoOperations并提供更易读、更流畅的 API。...结果文档被映射到Jedi. 您可以通过提供目标类型直接将投影应用于结果文档as(Class)。 使用投影允许MongoTemplate通过限制对投影目标类型所需字段的实际响应来优化结果映射。...独立于底层数据存储 API 工作。 Query by Example 也有几个限制: 不支持嵌套或分组的属性约束,例如firstname = ?0 or (firstname = ?...类型化ExampleSpec实例使用它们的类型作为结果类型和Repository实例的集合名称。...在 中包含null值时ExampleSpec,Spring Data Mongo 使用嵌入式文档匹配而不是点符号属性匹配。这样做会强制对嵌入文档中的所有属性值和属性顺序进行精确的文档匹配。

    3.5K20
    领券