我目前正在开发我的第一个 Wordpress 插件,我遇到了 REST API 的问题,我不太理解。也许有比我更好的方法,但我还没有意识到,所以我很高兴获得任何帮助!
这是交易:
我正在创建一个 API,该 API 应该提供来自 Wordpress mysql 数据库的缓存数据。我正在将数据(url、mime-type、[...])从网络资源存储到我想要提供服务的数据库中。要缓存的资源在策略文件中定义,如下所示:
政策.json
{
"files":
[
{
"resource_url": "https://example.come/assets/images/image.png",
(...)
},
(...)
]
}
由于文件数量是动态的,我的服务需要调整以适应策略文件规定的任何自定义路由。例如,在上述情况下,它应该通过我的 Wordpress 站点提供资源,该站点最初来自 example.com。因此,如果 有请求,则应该提供https://my-wordpress-site.com/wp-json/example/v1/assets/images/image.png缓存的文件。https://example.come/assets/images/image.png
我的 REST API 看起来像这样:
我的想法是,我创建一个可读 (GET) 的其余路由,它接受其余 API 上的所有请求。一旦请求进来,它就会被过滤器拦截rest_pre_serve_request
,以检查数据库是否缓存了所请求的文件,如果缓存了,则提供该文件。这是我的方法:
根据文档,我可以简单地回显来自过滤器的数据并返回true
或false
指示请求是否已得到服务。但就我而言,我还必须添加其他数据,例如响应的Status-Code
和Content-Type
,以便客户端能够正确处理它。现在这是症结所在。该逻辑的工作方式与我想要的完全一样,并且它按照应有的方式服务请求,但我仍然收到已从PHP发送警告的经典标头,
上面代码中标记了第 41 行和第 92 行。
那么,我在这里做的事情有什么根本错误吗?或者也许有人知道如何正确处理保存的东西?
我感谢您的帮助!!
胡子哥哥