在Drupal Commerce中扩展JSON:API支持 - Centarro
在Drupal Commerce中扩展JSON:API支持
在电子商务领域,创新是推动增长的关键。许多企业在使用Drupal时,通常会采用全栈架构,既负责前端也负责后端。然而,随着业务的不断发展,企业可能需要解耦前端,以提升性能或打造独特的客户体验。此外,企业还需要将Centarro Commerce的数据暴露给其他业务系统,以支持运营需求。
在设计HTTP API时,我们综合考虑了数据模型的各个方面,以及前端应用程序与之交互的方式。以下是我们希望实现的主要功能:
- 产品列表检索:支持Commerce框架的动态定价功能,例如基于客户类型或货币的价目表。
- 购物车操作:允许API消费者将产品添加到购物车,而无需了解商店的具体细节,例如是否使用现有购物车或创建新购物车。
- 购物车管理权限:限制API消费者只能修改当前客户购物车的特定元素(如订单项目数量),而不能执行管理任务或操作其他用户的订单。
- 结账和收款:收集发货和账单信息以完成交易。
JSON标准化:API规范
早在2018年,我们发布了Commerce Cart API模块,该模块通过Drupal核心的RESTful Web服务模块提供购物车的HTTP HTTP API奠定了基础。
使用核心RESTful Web服务模块时,我们发现了一些挑战:
- 需要为数据模型定义自定义的请求和响应模式。
- 需要编写自定义的数据规范化器,以处理关系和复杂字段值的表示。
通过采用Drupal的JSON:API模块,我们能够专注于API与Commerce数据模型交互的机制,而无需完全重新定义JSON的表示方式。值得一提的是,JSON:API模块在Drupal 8.7版本中成为核心模块。关于这一历程,Drupal项目负责人Dries Buytaert撰写了一篇精彩的概述。
我们的Commerce API模块基于JSON:API模块进行了扩展,创建了自定义资源路由,用于提供购物车和结账API。这种方式让我们无需重新发明数据返回的方法,而是将精力集中在为Commerce开发人员提供更友好的接口上,数据处理部分则交由JSON:API模块完成。
当前版本的功能与未来展望
目前,我们利用实体API来处理账单和发货信息。这些信息存储在相关的实体中,例如:
- 账单信息:存储在配置文件实体中,并由订单或付款方式引用。
- 发货信息:同样存储在配置文件实体中,并由发货引用。
为了简化数据输入,我们在订单中添加了伪属性“billing_information”和“shipping_information”。通过这些伪属性,API消费者可以直接通过订单API请求创建或修改这些配置文件,而无需手动创建实体并填充引用。这种方式既简化了操作,又隐藏了数据模型的内部复杂性。
如何体验?
如果您想亲自体验,我们提供了一个React演示应用程序,您可以通过以下链接访问:
Centarro Commerce React 演示
未来,我们还计划在GitHub上发布示例React应用程序,敬请期待!
总结
通过扩展JSON:API支持,Centarro Commerce为开发人员提供了更强大的工具,简化了与数据模型的交互,同时提升了系统的灵活性和可扩展性。无论是优化前端性能,还是集成其他业务系统,这些改进都为企业提供了更多可能性。
如果您对我们的工作感兴趣,欢迎在DrupalCon的Centarro展位与我们交流!
原文链接: https://www.centarro.io/blog/expanding-jsonapi-support-drupal-commerce
最新文章
- Meta×Google 云计算协议:2025 多云/混合云 API 极速落地 AI 出海成本降 40%
- 【2025】AI 占星报告批量生成器|基于 Astro-Seek API 微调 7B 模型,一键输出每日/每周运势
- 5种最佳API认证方法,显著提升…
- API接口重试的8种方法
- AI 推理(Reasoning AI)优势:超越生成模型的架构、算法与实践指南
- 如何使用 DeepSeek 构建 AI Agent:终极指南
- AI 智能体 ReAct 架构设计模式剖析
- 深入解析谷歌翻译API:基于Gemini的规模化高质量翻译与创新应用
- 2025年小本生意新风口:如何借助 AI 实现低成本高效率创业?
- 使用 python 和 flask 构建 restful api
- rpa vs. api:差异与应用场景
- 微服务 API 安全实战:防护策略与漏洞修复