WordPress 可以自由组织代码结构,这篇文章介绍我项目中路由相关的代码结构。
一,添加路由
相关函数
1、rest_api_init 钩子函数,注册接口的相关信息需要挂载到此钩子上。
2、register_rest_route 接口路由函数
add_action( 'rest_api_init', 'first_route_hook' ); function first_route_hook() { register_rest_route( 'rangtuo/v1', 'test/(?P<id>[\d]+)', [ 'methods' => 'GET', 'callback' => 'first_action_callback' ] ); } function first_action_callback($request) { $params = $request->get_params(); $id = $params['id']; return $id; }
通过 http://www.test.com/wp-json/rangtuo/v1/test/666 访问接口。
$request 参数
$request->get_url_params(); $request->get_query_params(); $request->get_body_params(); $request->get_json_params(); $request->get_default_params(); $request->get_file_params(); // 上传的文件
检查权限
在使用接口的时候,可以检查用户的权限。
register_rest_route( 'rangtuo/v1', 'test/(?P<id>[\d]+)', [ 'methods' => 'GET', 'callback' => 'rangtuo_cb', 'permission_callback' => 'rangtuo_permission_callback' ]); function rangtuo_permission_callback() { return current_user_can( 'edit_others_posts' ); }
代码示例:
add_action( 'rest_api_init', function () {
register_rest_route( 'rangtuo/v1', '/author/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'test_callback',
));
});
function test_callback($request){
$request->get_url_params();
$request->get_query_params();
$request->get_body_params();
$request->get_json_params();
$request->get_default_params();
$request->get_file_params(); // 上传的文件
$data = array(
"message" => "hello",
"test" => __('dada', 'rangtuo'),
"dodo" => __('dodo', 'rangtuo')
);
$response = new WP_REST_Response($data);
$response->set_status(403);
return $response;
}
二,RESTful API 推荐的目录结构
项目中,接口模块目录结构:
├── api # 接口目录 | ├── orders # 订单模块 | | ├── orders.controller.php # 订单控制器 | | ├── orders.service.php # 订单服务 | | └── routes.php # 路由文件 | └── stars # 收藏点赞模块 | ├── auth # 注册登录模块 | ├── ... # 其他模块
三,RESTful API 推荐的路由对应方法
修改时间 2024-06-04
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏