在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
最新文章
- 如何获取百度语音翻译 API Key 密钥(分步指南)
- OpenAI OSS API 实战:打造智能客服与多轮对话系统全攻略
- eDRV的EV充电应用API:革新电动汽车即插即充体验
- 使用gin搭建api后台系统之框架搭建
- 什么是API定义?
- 不要让它们潜伏在暗处: 发现影子API的工具
- kfp-server-api:一个省时高效的 Python 库
- Postman API 自动化测试教程:入门指南及更多 – Nao
- 从2024年三个API趋势中学习,塑造新的一年
- 通过Fetch和Axios在React中使REST API
- 企业如何合法使用三方数据、自有的用户数据?
- 如何在 Python 和 Flask 中使用 IP API 查找地理位置?