构建自定义的REST API


10

我有一个WordPress.org网站,该网站接受用户输入,搜索自定义数据库并显示查询结果。我使用wpdb类进行此工作。现在,我正在尝试使它适用于android应用。

据我了解,构建RESTful服务器是此类事情的当前“最佳实践”。我研究了一些可以帮助我完成此操作的插件,然后发现:

  1. json-rest-api-在我看来,这仅公开了WordPress的核心功能(即帖子,页面,用户等),而我看不到如何使它对非默认表执行自定义查询。

  2. 这篇博客文章说,wp mvc完全可以实现我想要的功能,只不过它已经两年多没有更新了,所以可以将它排除在外。

  3. 也有Jetpack,但据我所见,json-rest-api是它的更新版本,似乎也只提供了核心功能。

有没有办法使这些插件中的任何一个都能用于自定义端点?还是我还没有找到其他插件?

如果我不使用插件,我认为我必须自己动手。我可以从头开始(使用做到这一点wpdbmsqli或东西),或与API的帮助,如Restler

如果我自己动手,是否应该在主题中创建模板,是否在其中包含REST并将该主题分配给仪表板中的页面?还是为此而让另一台服务器与WordPress分开运行会更好?

据我所知,这些是我唯一的选择。我想知道推荐的最佳做法是什么。我发现很难相信没有其他人能做到这一点。有什么我忽略的选择吗?


你最终要做什么?我正在尝试为wp rest api创建自定义路由/端点,并且1)文档太糟糕了2)网上有零个示例。让我知道您走的路!
Jacksonkr

1
我决定继续在Wordpress之外构建自己的API,但是可以访问相同的数据库。但是我从来没有真正解决过这个问题,因为这只是一个附带项目,而我忙于其他事情:P。如果我是你,我将研究symfony2laravel框架。它们真的很容易快捷地启动和运行。
Yep_It's_Me 2015年

Answers:


15

TL; DR

是的,WordPress当然可以充当移动应用程序的后端。是的,页面可以充当其他端点/接口。不,主题模板不是逻辑的正确领域。编写自己的插件。


指针

我发现很难相信没有其他人能做到这一点。

我有一个。不止一次。我几乎可以肯定我并不孤单。“没有人为此写过很多博客”可能是更正确的概念。

如果我不使用插件,我认为我必须自己动手。我可以从头开始(使用wpdb,msqli或其他方式),也可以借助诸如Restler之类的API来执行此操作

我不知道“ Restler”,无论如何这都不在该堆栈上。
就“使用wpdb,msqli或其他东西”而言:您肯定会使用wpdb将(接收到的)数据保存到数据库中,但是它与端点逻辑无关。

主题模板不是您应关注的内容。主题用于视觉呈现。REST端点根本不需要视觉外观。

通过简码将端点插入要使用的页面中。

让简码处理程序/回调监听HTTP POSTGET并相应地调用数据保存或其他辅助方法。


使用WordPress作为端点/后端有意义吗?

这取决于。
如果您只需要一个端点来保存数据:否。仅仅为了使用节省几行代码而加载整个内核wpdb是不值得的。
如果您需要一个可以通过Web浏览器登录的后端,该后端可以显示表格数据,提供更改所述数据的方法,甚至可能具有多个访问级别/用户角色和权限,那么是的,这确实有意义。


3
很好的答案+1。
gmazzap

2
加倍。+1
kaiser 2014年

谢谢你的回答!因此,我有两个选择:1.编写自己的插件;2.编写单独的服务。由于我需要端点执行的所有操作都是使用一些GET参数并返回一个JSON主体,因此我认为我应该编写自己的服务,因为“加载整个核心以节省使用几行代码wpdb是不值得的”。
Yep_It's_Me 2014年

0

API Endpoints插件应该可以满足您的所有需求,尤其是如果您熟悉MySQL。您将执行以下步骤:

  1. 创建一个新的Twig模板,输入MysQL查询以从WordPress网站获取数据,并使用Twig语法以任何格式输出数据。例如,JSON。

  2. 创建一个新的API端点,为其命名并配置为使用您在步骤1中创建的Twig模板。

完成后,对要创建的每个端点重复步骤1和2。API端点使用标准的WordPress身份验证系统,因此最好在WordPress中创建一个单独的用户,并使用其用户名/密码访问您的api端点。


API端点对于我的一个项目来说看起来很有趣,但是它需要Twig Anything,这几乎是不可能获得的,因为它需要登录您的博客(不允许公共订阅)。
mettjus

我现在意识到它不是免费的……
mettjus 2015年

0

WP REST API的新版本处于Beta中,但是有关如何注册自定义REST端点的文档非常不错。关于如何在版本1中完成该操作,还有一个很小的争议,我将尝试使用该版本,因为不能保证beta不会保持稳定。我假设您可以在注册方法中使用wpdb。我实际上只是在使用ACF东西,并将其预先放入php中的对象中,以使用angularJS创建一个漂亮的,可搜索/可排序的多属性索引页面。

WWP REST API 1和2在他们的文档中的比较

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.