php 按分页读取json_JSON:API登陆Drupal Core

5776a3847ee9e988dcf6a569c71d257a.png
Drupal core现在提供了一个开箱即用的JSON:API实现,标志着Drupal API-first的另一个重要里程碑。

02744fdb4eb393f6772cc407e619a4f3.png

突发新闻:我们刚刚将JSON:API模块提交给Drupal 8开发分支。

换句话说,在短短几个月内,所有Drupal 8站点都将支持JSON:API !

这标志着Drupal被优化成为构建耦合和解耦两种应用的API-first平台的又一个重要里程碑。

使用JSON: API,开发人员或者内容创建者在Drupal UI内创建内容模型(无需编写任何代码),并自动获得一个不仅伟大而且强大、符合标准的创作经验,Web Service API会把这些内容拉到JavaScript应用程序,digital kiosks,聊天机器人,语音助手等等。

76a5b074af88bcc76750d08a9aec0dd4.png

启用JSON:API模块后,可以通过JSON:API Web Service API访问所有Drupal entities,如blog posts,users,tags,comments等。JSON: API提供了一个标准化的API用于读取和修改Resources(entities),在Resources(entity references)关系间相互作用,只获取选择的字段(如只有“标题”和“作者”字段),包括相关Resources以避免额外的请求(如关于内容作者的详细介绍),还有Resources集合的过滤、排序和分页等。

除了非常强大之外,JSON:API很容易学习使用,并且使用了我们测试、调试和扩展Drupal站点的所有工具。

Drupal的JSON:API实现酝酿了多年

2016年5月开始开发JSON:API模块,2017年5月发布1.0稳定版。大部分工作都是由一个开发人员在业余时间完成的:Mateu Aguilo Bosch (e0ipso)。

在征求和咨询其他人之后,我觉得JSON:API属于Drupal的核心。我第一次提出这个想法是在2016年7月,2016年12月更加确信,并于2017年10月建议我们标准化它。

这就是为什么在2017年底,我要求Wim Leers和Gabe Sullice(Acquia成员)开始把大部分时间花在提高JSON:API的稳定性上。

Wim和Gabe很快成为Mateu的主要贡献者。他们编写了数百个测试并添加了缺失的特性,以确保我们严格遵守JSON:API规范。

一年后,他们的工作在2019年1月7日的JSON:API 2.0稳定版中达到了顶峰。2.0版本标志着模块向Drupal核心转移的开始。经过严格的审查和更多的改进,该模块终于在今天早些时候提交到core。

从开始到结束,它花费了28个月,450次提交,32次发布,以及5500多次测试运行。

现有的最佳JSON:API实现

几乎可以肯定,JSON:API模块是目前存在的功能最完整、最容易使用的JSON:API实现。

Drupal JSON:API实现支持JSON:API 1.0规范的所有特性。每个Drupal实体(JSON:API术语中的资源对象)都可以通过JSON:API自动获得。现有的读写访问控制受到尊重。还提供实体的Translations和Revisions。此外,Querying entities(JSON:API术语,过滤资源集合)不需要任何配置(例如设置一个“Drupal视图”)也是可能的,这意味着前端开发人员可以立即开始他们的工作。

特别值得注意的是,由于Drupal的数据模型和introspection功能,所有这些都成为可能。Drupal已有十年历史的实体API、字段API、访问API,以及最近的配置和类型化数据API,都是使Drupal的数据可以通过web服务API访问的强大基础。这一点不可低估,因为它使JSON:API的实现健壮、深入集成和优雅。

我要特别感谢为JSON:API模块做出贡献的许多贡献者,正是他们帮助将JSON:API添加到Drupal 8。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
The website encountered an unexpected error. Please try again later. AssertionError: Cannot load the "commerce_order_item_type" entity with NULL ID. in assert() (line 295 of core\lib\Drupal\Core\Entity\EntityStorageBase.php). assert(, 'Cannot load the "commerce_order_item_type" entity with NULL ID.') (Line: 295) Drupal\Core\Entity\EntityStorageBase->load(NULL) (Line: 488) Drupal\Core\Entity\EntityBase::load(NULL) (Line: 65) commerce_ticketing_form_commerce_product_variation_type_form_alter(Array, Object, 'commerce_product_variation_type_add_form') (Line: 562) Drupal\Core\Extension\ModuleHandler->alter('form', Array, Object, 'commerce_product_variation_type_add_form') (Line: 840) Drupal\Core\Form\FormBuilder->prepareForm('commerce_product_variation_type_add_form', Array, Object) (Line: 284) Drupal\Core\Form\FormBuilder->buildForm(Object, Object) (Line: 73) Drupal\Core\Controller\FormController->getContentResult(Object, Object) call_user_func_array(Array, Array) (Line: 123) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 121) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) (Line: 97) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 169) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 106) Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 718) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
最新发布
06-02

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值