设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 500|回复: 0

如何使用REST API创建Web应用程序

[复制链接]

307

主题

0

回帖

925

积分

高级会员

积分
925
发表于 2023-12-26 10:51:02 | 显示全部楼层 |阅读模式
@ Vanush ghmaryan 2021年5月20日WordPress 9 MIN READ   

前段时间我写了一篇关于通过CLI使用没有GUI的WordPress的文章,在那里我提到你实际上可以不使用WP仪表板做任何事情。在本文中,我将采用另一种方法,只保留WordPress仪表板,并向您介绍如何安装一个解耦的WordPress。让我们潜水吧!

“单片WordPress”

WordPress已经走过了很长一段路,从用于小型博客到成为第一的CMS解决方案。它成长起来,开发了一个插件和主题的大市场,这些插件和主题可以扩展它的功能,增强它的外观和用户体验。从一开始,WordPress就有一个“单片”架构,这意味着它在一个应用程序中拥有后端和前端。当我们安装WordPress时,我们得到一个默认的主题作为我们网站的前端和一个通过/wp-admin/ URL访问的仪表盘作为后端。我们可以创建帖子和页面,安装插件,改变设置和安装主题,这将改变我们网站的前端,但前端将通过WordPress提供服务,它将呈现HTML页面并将其发送到浏览器。它作为MPA(多页应用程序)工作,因为它分别呈现每个页面,当我们在我们的WordPress中导航时,每次锚点点击通常会触发重定向到另一个页面。让我们来反对这种常见的方法,将我们的WordPress转换为Headless模式,并描述它的优缺点。访问我们的主页,了解更多关于第一个人工智能支持的WordPress平台的信息。“无头”是什么意思?在现代世界中,“单片”体系结构正逐渐被REST API + SPA方法所取代。REST API(也称为RESTful API)是一种应用程序编程接口(API或web API),它符合REST体系结构风格的约束,并允许与RESTful web服务交互。

REST是一组体系结构约束,而不是协议或标准。API开发人员可以以多种方式实现REST。当通过RESTful API发出客户端请求时,它将资源状态的表示传递给请求者或端点。这些信息或表示形式通过HTTP以几种格式之一传递:JSON (Javascript对象表示法)、HTML、XLT、Python、PHP或纯文本。JSON是最普遍使用的数据交换格式,因为它与语言无关,而且人类和机器都可读。所以,在REST API中,我们有返回可解析数据的端点,而不是网页链接,所以它可以在任何其他语言编写的任何其他应用程序中使用。这意味着我们可以在我们的应用程序中实现REST API,并将数据作为JSON提供给所有客户端应用程序:一个用React编写的网站,iOS和Android应用程序,桌面应用程序,或任何其他web应用程序。 SPA代表单页应用程序。许多现代网站以spa的方式工作。当我们打开一个SPA网页并在其中导航时,它从后端获取新数据并更改页面的内容,但它不会将我们重定向到另一个页面。它节省了时间和网络带宽,因为样式和脚本以及整个HTML网页并不总是从后端请求并在我们的浏览器中呈现。

无头模式意味着我们分离了WordPress的前端和后端部分,只留下后端部分。我们仍然可以登录仪表板,安装插件,创建或编辑帖子和页面,在我们家一样舒适的环境中。但由于我们的前端是分离的,它可以是任何东西(甚至什么都没有)。这可以通过使用WordPress REST API实现,所以我们的WordPress将作为数据服务器工作,只发送JSON数据。正如你在上图中所看到的,传统CMS中的网页会被渲染并为所有人服务与无头CSM相比,每种类型的设备都有自己的前端实现。所以,让我们看看如果我们解耦WordPress,我们会得到什么。我们可以自由选择我们网站的前端堆栈。这是一个很大的优势,但是随着强大的能力,随之而来的是巨大的责任,即创建和维护您自己的前端应用程序的责任。我们最小化或禁用了主题加载,所以WordPress核心启动得更快一些(你可以通过WP分析器检查它;如果你不知道这是什么,请查看我关于WP CLI的文章),但启动时间仍然取决于插件,如果你使用React编写一个超级快速的前端,例如,你的网站将会有一个巨大的性能瓶颈,由WP REST API造成。我将描述一些解决这个问题的方法,但您应该记住它。部署解耦的WordPress(以及任何其他分布式体系结构的应用程序)比部署一个WordPress网站(任何带有单片体系结构的web应用程序)要复杂得多。您不仅应该为WP核心创建前端,还应该为所有所需插件的前端功能创建前端。它将与后端解耦,除了插件的更新,还需要单独的更新,它基本上是插件的一个插件。在我看来,使用无头WordPress最重要和最重要的优点之一是,众所周知的WordPress仪表板可以与任何其他工具或网站轻松集成。当你想要在现代反应前端框架的基础上建立一个非常酷的、设计良好的、动态的网站,但又不想或没有时间建立网站的管理区域(网站管理员将填充内容或对网站有一些控制)时,它就很方便了。此外,如果您只使用标准化的解决方案,您将节省所有人的时间。为了使WordPress无头化,你需要做两件事:启用REST API和禁用你正在使用的主题。另外,您需要将它部署到不同的域或子域。例如,如果你想有一个自定义前端应用程序,在example.com上使用无头WordPress, WordPress需要指向wp.example.com,而你的主前端则指向example.com。

REST API在WordPress中是WordPress核心的一部分,从2016年12月发布的4.7版本开始。所以,如果你安装的WordPress比那个版本更新,你可能已经启用了它。如果你用的是旧版本的WordPress,我强烈建议你更新它,因为,现在是2021年了,你用的是一个过时的版本。主题的情况有点复杂。例如,您可以使用重定向创建一个自定义空白主题并激活它。为此,你需要创建两个文件:style.css 和index.php。因为你的WordPress安装将安装在不同的域,只要把正确的域而不是mysite.com,以防有人打开它。把这两个文件放到wp-content/themes/blank/目录下,打开WordPress仪表板,到themes部分,并激活它。作为一个非diy的替代方案,你可以安装无头模式插件来实现同样的功能。采用更实用的方法,你可以安装WP Headless插件,当你试图在WordPress的前端打开文章或页面时,它会打开编辑。如果您没有登录,它将重定向到登录页面,成功授权后,您将被重定向到文章或页面编辑页面。WordPress并不是最慢的CMS,但当插件过载时,它的性能会很差。api应该是快速的,因为如果我们想要我们的解耦前端运行得更快,我们也需要一个快速的后端为它提供数据。这里有几个选项。

静态网站生成器旨在生成静态页面v是你提供给他们的数据。在生成的静态文件前放置一个像Nginx这样的快速web服务器,你将拥有一个即使在巨大负载下也能完美运行的闪电般的网站。它被称为Jamstack方法。你可以使用这些静态网站生成器之一: Gatsby

Project Homepage。GitHub库。一个非常流行的选项,有一个可爱的logo,它生成反应应用程序,并使用非常现代的GraphQL作为数据存储。此外,它还有许多插件,允许您从多个来源导入数据,还有WordPress。如果你想在WordPress中使用它,请遵循这个指南。Hugo

项目主页。GitHub库。Hugo是最流行的静态网站生成器之一。它是用围棋写的。一个好的经验法则是,Hugo为每个内容花费大约1毫秒的时间。缺点是,你需要做一点编码来连接到无头WordPress,但这是值得的。Jekyll

项目主页。GitHub库。这是一个有趣的选项,因为GitLab广泛使用它来创建静态网站和文档。它是用Ruby编写的,并将页面呈现给Markdown和Liquid模板。这里的问题是没有插件可以从WordPress REST API中提取帖子,但是有一些选项可以导出它们并将它们导入到Jekyll。如果你不熟悉缓存,我们有一篇关于在WordPress中缓存数据的好文章。TLDR;它是一种将随时可用的数据存储在具有唯一键的快速共享内存中,然后从那里共享数据的技术,而不是进行耗时的例行计算。让我们来看一个通过这种技术加速REST API的好例子。这些人为此写了一个插件。它在底层所做的是使用WordPress Transient API和页面片段作为键来缓存REST API响应。每次编辑文章或页面时,缓存都会重新构建,当然,您可以从设置页面手动完成。此外,它使用SHORTINIT常量只加载最小的WordPress Core,并加快从缓存提供数据的过程。你可以在这里找到插件,存储库是存档的,我认为它没有维护,但你可以很容易地分叉它,给它第二次生命。无头WordPress是一个美丽的概念,但它并不适合所有人。但如果你是一个前端开发人员,但你有一个项目,你需要做一些后端,那么它将非常有效。此外,我认为将其与像Gatsby这样的静态网站生成器结合,并通过CDN提供服务,将是构建一个性能优先、零停机的优秀网站的一种非常强大的方法。你喜欢这篇文章吗?传播这个词!留言取消回复

您的电子邮件地址将不会被公布。必填字段标记为*

您的电子邮件地址将永远不会被发布或共享。必填字段标记为*

COMMENT*

NAME *

EMAIL ADDRESS *

WEBSITE

在此浏览器中保存我的姓名、电子邮件和网站,以便下次评论时使用。



2评论排序最近的大多数回复 Neha Sharma 2022年9月14日

谢谢你发表这样一个有洞察力的文章。老实说,我一直在寻找增强WordPress REST API的方法,有了这篇文章,我想我的许多疑虑都已经解决了! 谢谢你发表了这么有见地的文章。老实说,我一直在寻找增强WordPress REST API的方法,有了这篇文章,我想我的许多疑虑都已经解决了!保存取消删除查看所有1条回复回复   10Webbie 2022年9月15日

嗨,Neha,谢谢!很高兴我们能帮助你 嗨,尼哈,谢谢!很高兴我们能帮助你保存,取消,删除,回复相关帖子WordPress缓存和如何提高你的网站速度504网关超时错误和如何修复它的完整指南如何设置WordPress多站点的最后一个指南,WP CLI你将会需要d # wordpres
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|跨境圈导航 ( 粤ICP备19025394号 )

GMT+8, 2024-11-25 00:13 , Processed in 0.054866 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表