
有些站点可能不希望暴露某些 JSON:API 资源类型或字段,或希望重命名字段以提供更简洁的接口。
为允许进行这些更改,JSON:API 会以事件名 ResourceTypeBuildEvents::BUILD
派发一个 ResourceTypeBuildEvent
事件对象。请参阅订阅与派发事件以了解如何使用这些事件。
事件订阅器可以调用以下方法:


要点速览(TL;DR)
如果你需要暴露非实体(non-entity)数据,请选择 REST。其他情况下,选择 JSON:API。
更细化一些的说明:


JSON:API 完全基于实体(entity)。也就是说,它无法处理业务规则,或执行那些无法被视为 “CRUD” 的操作。诸如注册新账号、登录用户、请求新密码等业务逻辑不属于 JSON:API 的范畴。这些能力中有许多已经由 Drupal 核心提供。
下面给出一份常见需求与解决方案的非完整清单。
相关路径如下:
- /session/token
- /user/register
- /user/login
- /user/login_status
- /user/logout
获取会话令牌(session token)
获取令牌
curl \
--request GET http://drupal.d8/session/token
响应主体会以纯文本(非 JSON)的形式返回一个令牌。


资源与字段的重命名与禁用现已成为核心的一部分。
当你需要更改资源属性(例如 API 路径、资源计数或 include 的默认值),或者希望通过界面禁用字段或资源时,请使用JSON:API 扩展。
启用该模块后,你可以访问/admin/config/services/jsonapi,查看由 JSON:API 暴露的所有配置与内容列表。
文章来自 Drupal 文档。


JSON:API 模块旨在将通过 Drupal 的 Entity API、Field API 和 Typed Data API 定义的数据模型,按符合 JSON:API 规范 的方式通过 API 暴露出来,以便与由 Drupal 管理的数据(实体)进行交互。
在此过程中,它会遵循 Drupal 针对这些数据的所有安全措施:


在 React 中理解 CORS
CORS 长期以来一直让开发者(尤其是入门者)感到困惑——甚至沮丧。这个概念并不直观,特别是当你使用 React、Angular 或 Vue 等框架构建单页应用(SPA)并尝试与第三方 API 交互时。
在本指南中,我会从零开始帮助你理解 CORS。我们将搭建一个简单的 React 应用和一个 Express 服务器,来演示究竟是什么触发了 CORS 错误以及它们为何发生。更重要的是,我会带你逐步了解多种解决方法——既包含通用思路,也包含在 React 环境中的具体做法。
什么是 CORS?
CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种协议,用于规范 Web 应用如何从不同来源(origin)的服务器请求资源。就像 HTTPS 规定了安全通信的规则一样,CORS 规定了跨域请求的规则。


在不断发展的网页开发领域中,Drupal 11 脱颖而出,成为构建动态网站和应用程序最强大、最灵活的平台之一。它的模块化架构使开发人员能够定制和扩展核心功能,以满足各种项目需求。
其中一个扩展就是 Webform REST 模块,它是一个强大的工具,通过 RESTful API 实现 Drupal 与外部应用之间的无缝集成。本指南提供了一个在 Drupal 11 中使用 Webform REST 模块的实用入门,带领你完成其安装与配置,并演示如何高效地与其交互。
你将学到什么
本文涵盖以下主题:
-
Webform REST 模块概述
-
所需模块和依赖项
-
安装 Webform REST 和 REST UI
-
配置 Webform REST 模块
-
处理 CORS
-
发送 API 请求
-
理解请求和响应载荷


什么是模块化内容?
由于你的网站内容存储在数据库中,因此让内容实现模块化是很有必要的。模块化意味着网站上的某些页面并不是作为完整页面手动编辑的,而是由其他内容项自动生成。例如,在农贸市场网站的场景中,你可以为食谱创建单独的内容项。如果食谱内容项包含一个字段来跟踪配料,那么你的网站就可以生成一个组合页面,用于列出食谱,并允许访问者搜索包含他们在市场上购买的某种特定配料的食谱。
页面的较小部分也可以作为组合内容生成。例如,食谱内容项可以有一个字段,用来跟踪是哪位供应商提交了食谱(参见 第 6.4 节,“概念:引用字段”),而供应商的详细信息则在单独的供应商内容项中编辑。这将使你的网站能够实现以下功能:
