WordPress REST API自定义路由:扩展API功能的强大工具
本文探讨WordPress REST API的自定义路由功能,展示如何创建定制化的API解决方案。 与仅使用默认路由相比,自定义路由提供了更精细的控制和扩展性。
核心要点:
register_rest_route()
函数,结合rest_api_init
动作,即可添加自定义路由。 需指定命名空间、路由路径以及包含方法、回调函数和权限信息的端点数组。超越默认路由:构建无限可能
关于WordPress REST API的大部分讨论都集中在查询默认路由上,这使得它看起来像一个单一的API,例如Twitter API。 然而,WordPress REST API并非单一API,而是数百万个高度可定制的API的集合,本身也可以作为构建API的工具。 默认路由是众多站点需求的折中方案,并非所有任务都能仅靠默认路由完成。
就像WordPress不仅仅是全局WP_Query对象一样,REST API也不仅仅是默认API。 只使用默认路由就像在传统的WordPress项目中从不创建自己的WP_Query对象,或覆盖pre_get_posts
中的默认查询一样。虽然可行,但并非所有工作都能仅靠默认的WordPress URL路由来完成。
REST API同样如此。 REST API的联合首席开发者Ryan McCue曾提到,该项目的第二版分为两部分:默认路由和创建RESTful API的基础架构。默认路由为创建自定义路由提供了很好的示例。
添加路由:register_rest_route()
函数
REST API第二版引入了一个名为register_rest_route()
的新函数,允许向REST API添加路由并传入端点数组。 对于每个端点,不仅要提供处理请求的回调函数,还可以定义查询中所需字段,包括默认值、清理和验证回调函数以及单独的权限回调函数。
本文将重点介绍回调函数、字段参数和权限检查这三个方面,它们展示了API的架构,并通过一个示例演示如何创建一个自定义路由,其中包含两个端点,用于显示由Easy Digital Downloads (EDD)驱动的电子商务网站中的产品信息。
设置路由:命名空间和路由路径
定义自定义路由时,需在rest_api_init
动作中使用register_rest_route()
函数。 该函数接受四个参数:
命名空间: 所有路由都必须命名空间化,作为“wp-json”之后下一个URL段。 默认路由的命名空间为wp
。 命名空间避免了路由冲突。
路由路径: 命名空间后的URL。 例如,“/products”或“/products/(?P
端点数组: 定义路由的端点,包含方法、回调函数、参数等信息。
override
参数(可选): 布尔值,用于处理与已定义路由的冲突。 默认为false
,尝试合并路由;设置为true
则替换已声明的路由。
设置端点:方法和字段
端点需要定义一个或多个HTTP传输方法(GET/POST/PUT/DELETE)。 可以使用WP_REST_Server
类中的常量来定义方法,例如WP_REST_Server::READABLE
(只允许GET请求)或WP_REST_Server::ALLMETHODS
(允许所有方法)。
在定义字段时,可以指定字段的默认值、清理回调函数等。 这使得回调函数能够信任它接收到的数据。
回调函数和权限回调函数
每个端点的回调函数(在callback
键中指定)是请求将被分派到的方法(如果权限回调函数通过)。 权限回调函数(在permission_callback
键中指定)检查当前用户是否有权访问端点。
处理和响应请求
回调函数接收WP_REST_Request
对象,可以使用get_params()
方法获取已清理和验证的参数。 可以使用rest_ensure_response()
函数创建WP_REST_Response
对象,确保响应是正确的JSON格式,并包含必要的标头。
总结:自定义API,无限可能
WordPress REST API的默认路由非常有用,但自定义路由提供了更强大的控制和扩展能力。 当默认路由无法满足需求时,创建自定义路由是一个有效的解决方案。
以上是将自定义路线添加到WordPress REST API的详细内容。更多信息请关注PHP中文网其他相关文章!