热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何使用WordPress函数向远程api发出Get和Post请求

有时您可能希望向远程外部Api发出请求以获取一些数据。也许您想在博客上显示最新的微博内容,或者您想从其他WordPress网站获取最新的文章。对于这些情况,WordPress具有wp_remote_get和wp_remote_post函数。发出获取(Get)请求

有时您可能希望向远程/外部Api发出请求以获取一些数据。也许您想在博客上显示最新的微博内容,或者您想从其他WordPress网站获取最新的文章。对于这些情况,WordPress具有wp_remote_getwp_remote_post函数。

发出获取(Get)请求

 '1.1',
        'blocking' => true
    ));

    return json_decode(wp_remote_retrieve_body($response)) ?: [];
}

在此代码段中,我们创建一个名为do_remote_get的新函数,该函数除了一个名为$url的参数外,该参数必须为string类型。在我们的新函数中,我们使用wp_remote_get函数发出实际的http请求。wp_remote_get函数接受两个参数:

  • $url(String):要调用的远程URL /端点。在这种情况下,我们将传递给do_remote_get函数的$url变量传递给它。
  • $args(Array):请求的参数数组。这个数组可以有很多参数,但是在我们的例子中,我们只使用了两个。要使用的httpversion,并且我们将blocking设置为true,这意味着调用代码需要请求的结果。

请求完成后,我们将$response传递给名为wp_remote_retrieve_body的函数。此函数检查响应是不是WP_Error对象,并具有有效的 Body 。如果这样做,它将返回响应主体 Body 。如果不是,它将返回一个空字符串。

然后,我们将输出传递给json_decode函数以解码返回的Json数据。现在请记住,wp_remote_retrieve_body函数的返回值可以是一个空字符串,从而使json_decode返回一个伪造的值。这就是为什么我们在最后使用三元运算符?:[]来确保始终返回数组的原因。

现在,我们可以向Api发出get请求,如下所示:

{$post->title}";
}

在此示例中,我们使用新的do_remote_get函数向JSONPlaceholderApi发出Get请求,并获取一些(假)文章。然后,我们遍历文章并回显其标题。

注意:在此示例中,我们从do_remote_get函数中获取了对象数组。如果您希望将对象作为关联数组,则可以将true作为seccond参数传递给json_decode函数。

发出提交(Post)请求

在上面的示例中,我们使用wp_remote_get从远程Api获取一些文章。接下来,我们将处理提交请求,以在远程Api上创建文章。

 '1.1',
        'blocking' => true,
        'body' => $data
    ));

    return json_decode(wp_remote_retrieve_body($response)) ?: [];
}

对于Post请求,我们创建一个名为do_remote_post的新函数,该函数与do_remote_get函数相似,但是第二个参数$data保留要发送到远程Api的数据。

do_remote_post函数中,我们现在使用wp_remote_post函数发出请求。wp_remote_post函数接受相同的参数,和wp_remote_get一一对应。对于arguments数组,我们传递了一个额外的参数 body ,并将$data数组变量传递给了它。

现在,我们可以发出提交请求,以在Api上创建一个新文章,如下所示:

 1,
    'title' => 'foo',
    'body' => 'bar'
]);

var_dump($response);

在这里,我们使用do_remote_post函数向JSONPlaceholder Api发出发布请求,并向其传递网址/端点和代表我们要创建的发布的数组。

最后,我们使用var_dump打印来自Api的响应。JSONPlaceholder Api将仅返回我们创建的文章的Json对象。

注意:Api请求需要花费一些时间才能解决,因此最好将其缓存以加快页面加载速度。建议使用WordPress瞬态来缓存Api请求结果 。

以上内容出自: https://since1979.dev/snippet-007-get-and-post-to-remote-api-with-php/ ,由 WordPress大学 翻译整理。

拓展阅读

《 WordPress HTTP API 指南 》:本系列将详细讲解 WordPress HTTP API,涉及到常见的原创获取数据 wp_remote_get 和远程提交数据 wp_remote_post 等功能。


推荐阅读
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
author-avatar
兔子狗530_772
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有