使用什么方法来调用REST API?

时间:2017-05-22 作者:Sunny Batabyal

我正在为WordPress构建一个插件,它将与一些远程RESTAPI端点通信,并在WordPress面向公众的视图中以列表格式显示数据。

我应该使用哪种方法来调用API-

使用请求表单服务器wp_remote_get()?

专业人士-

A、 我可以给filteraction hook 更改基本HTML 布局

B、 我可以使用transient 缓存数据。

缺点-

A、 速度会慢一些。

通过使用从浏览器直接调用API服务器AJAX?

专业人士-

A、 速度会快得多。

B、 我可以提供一个覆盖函数来更改基本HTML 布局

缺点-

A、 无法提供Wordpress hooks.

2 个回复
SO网友:Mark Kaplun

总的来说,最好直接从源头获取信息。。。。但你必须考虑安全问题。从其他域使用REST API客户端将需要禁用该域的CORS保护。与此相关的风险大小取决于域之间的联系程度(它们是否有相同的管理员、相同类型的私有数据等)。这不应该轻率地完成,因为这会打开一个针对“主”站点的新攻击向量,需要思考。

如果数据不能被缓存,那么做两个而不是一个请求就是“愚蠢的”。

正确的实现可能是使用不共享cookie的不同域“重载”主服务器上的API端点,这将消除对CORS保护的需要。(这显然是假设您尝试使用API执行的操作不需要用户身份验证)

SO网友:figuitiko

REST API包括一个JavaScript/主干客户端库,因此您可以这样做。。

// Create a new post
var post = new wp.api.models.Post( { title: \'This is a test post\' } );
post.save();


// Load an existing post
var post = new wp.api.models.Post( { id: 1 } );
post.fetch();
参考号:https://developer.wordpress.org/rest-api/using-the-rest-api/backbone-javascript-client/

结束

相关推荐

Php致命错误:无法将WP_REST_RESPONSE类型的对象用作wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php中

我向WordPress添加了一个自定义端点,如下所示: add_action( \'rest_api_init\', function () { register_rest_route( \'menc/v1\', \'/crosscat/(?P[\\w-]+)/(?P[\\w-]+)\', array( \'methods\' => \'GET\', \'callback\' => \'dept_cat_api\',&#x