PHP服务器端API原理及示例讲解(接口开发)

article/2025/10/22 22:11:30

直接获取API接口数据的方法点击获取

 

相信大家都做过PHP请求API接口获取数据,比如淘宝API,微信公众平台,天气查询,快递查询等,有的需要参照接口文档根据签名算法构造sign(签名),或者设置token,然后通过curl发送POST请求带上参数,获得返回数据,一般是json或者xml格式。

但是现在的情况反过来了,我们要开发PHP服务器端的API接口,也就是别人请求我们,我们验证请求合法性,并查询数据返回。

这种情况其实在手机app开发中用到,手机APP应用往往需要请求PHP接口获取数据,不过这个请求一般是不用经过验证的,根据不同的功能请求不同的url,通常也是get方式传参数直接获取数据。

本文简单讲讲服务器端验证请求合法性的方法,和接收参数的方式。

简单的get请求如:http://www.demo.com/api/get_cat?id=2,请求这个网址会返回一些数据,无论是谁用什么编程语言请求都能得到数据。

那么在需要验证合法性的情况下这样显然是不行的。所以需要一个秘钥,这个时候往往用POST方式请求url。

比如传递的参数中有个签名sign,值是98888,当然生成sign的方式很多而且不可能这么简单,这里只是随便写,那么服务器端接收到sign是98888,假如我们约定98888就是合法的,这个时候判断sign是否为98888就可以验证这是合法请求了。

但是这样也太简单了,一下子就被破解了,设置这个sign就毫无意义了。所以要有一个生成sign的规则,请求的时候根据这个规则生成sign传参,服务器端接收的时候也根据这个规则生成sign,如果生成的sign一致,表明这是合法请求。每次请求都会带上sign进行验证。

还有一种验证叫token,第一次请求的时候验证token,在一定时间内不用再次验证。这要分两步,第一步先请求获取token的接口得到token,第二步才是请求具体接口的功能,需要带上token传参。由于第一次请求token的时候,服务器端先把token存储起来了再返回的,所以后面的请求判断传过来的token是否存在就可以验证了。

许多接口开发都同时使用两者方式保证私密和安全。

还有一点,发送POST请求往往使用PHP的CURL模块,比如对方通过curl发送POST请求,curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string),这里$post_string是传PHP数组的形式好,还是json格式呢?

如果是传PHP数组,我这边直接$_POST[‘xx']获取参数,如果是传的json格式,我这边好像要用file_get_contents(‘php://input', ‘r')获取传过来的json数据,然后解析json得到参数。

什么情况下用第二种?

这个曾经在网上提问过,看看大家怎么回答:

对PHP来说 JSON和数组有时候真的只是一行代码的区别,如果我写可能直接回用第一种。

我觉得你想你的代码简洁一点可以用第二种,我记得weixin的php sdk好像类似就是第二种(当然那是xml格式)

还有如果对方使用面向对象直接序列化出来的json的话,用json会让他的代码更简洁一点。

第一种做法,是传输的是form表单POST协议,PHP会把PHP数组变成HTTP表单的格式,跨语言通用,但是这种并不是主流的API协议,而更像是模拟提交表单。

绝大多数API协议会用JSON POST,第二种做法,即在HTTP Body里放JSON数据。也是跨语言的,但作为API更友好。

第一种方法,直接PHP curl,如果数据内容没处理好,数组value里传了 @/xxx/xxx 这样的内容,curl会把服务器上的本地文件传出去,注意防范。

x-www-form-urlencoded是RFC标准,没什么不兼容的,岂止跨语言,还跨越时空。JSON这种是近几年想出来的,不是标准,用着方便而已。


http://chatgpt.dhexx.cn/article/WDFX474Q.shtml

相关文章

php开发APP接口(一)

php开发APP接口(一) 使用PHP来生成APP接口数据是非常简单的,如果你还不了解PHP没有关系,只需要看过PHP的基本语法,再看本示例就可以了。 APP接口一般都是json格式(当然也有少数xml格式)遵循re…

安卓ViewFlipper跑马灯效果

前言:ViewFlipper是一个切换控件,一般用于图片的切换,当然它是可以添加View的,而不限定只用于ImageView,当然我们也可以自定义View达到跑马灯效果。 效果: ①:MainActivity使用: …

CSS实现文字跑马灯效果

CSS实现文字跑马灯效果 在完成一个任务的时候,要求在表格中固定宽度的其中一个item文字过长需要滚动显示,然后经过多次效果的尝试,实现代码如下所示: 它需要一个外层包围盒,设置定宽、文字不换行以及超过隐藏子元素为…

html纵向的跑马灯效果,单行文字垂直/水平跑马灯效果

需求描述 接到的需求是这样的:跑马灯效果 一次展示一行文字 循环滚动 文字滚动到视野中停留一秒后滚出。 静态效果如下图,文字从下往上或者从右往左滚动,滚动到此位置时停留一秒(不会传动图... 网络上有比较多的多行文字循环滚动的demo,找了一…

Flutter-跑马灯效果实现

1、背景: 使用三方组件在首页做个跑马灯效果,隔一段时间首页会闪一下,估计是三方组件有内存泄露。趁有空自己写个简单跑马灯效果。 2、效果: 3、调用方法: 将下方代码copy到项目文件内,引用文件&#xff…

TextView 跑马灯效果

1、重写TextView class TextViewMarquee : AppCompatTextView {constructor(context: Context?) : super(context!!) {}constructor(context: Context?, attrs: AttributeSet?) : super(context!!, attrs) {}constructor(context: Context?, attrs: AttributeSet?, defSt…

html js 跑马灯效果,Javascript实现跑马灯效果的简单实例

页面html: var speed 10 var demo document.getElementById("demo"); var demo1 document.getElementById("demo1"); var demo2 document.getElementById("demo2"); demo2.innerHTML demo1.innerHTML function Marquee() { if (…

Vue跑马灯效果

1、跑马灯效果 说明&#xff1a;单击"应援"按钮文字向左飘动,再单击"暂停"按钮停止当前飘动 2、完整代码 (注意&#xff1a;代码中需要引入vue.js文件&#xff0c;这个文件自己根据目录位置引入&#xff0c;具体位置代码中有注释) <!DOCTYPE html>…

跑马灯效果

最近做项目需要展示一个展示广告的跑马灯效果&#xff0c;网上找到一个继承 HorizontalScrollView 实现的&#xff0c;但是不能循环滚动&#xff1b;还有用 RecyclerView 实现的&#xff0c;比较好&#xff0c;但是会可以手动滑动&#xff0c;也不符合需求&#xff0c;下面自己…

android布局跑马灯,Android自定义跑马灯效果(适合任意布局)

因为项目需要&#xff0c;做了一个自定义垂直跑马灯&#xff0c;分享给大家。 先上个效果图&#xff1a; 从图片中可以看到布局是由包含两个TextView的布局组成&#xff0c;一般的垂直跑马灯效果只支持单个TextView&#xff0c;水平方向的跑马灯更是不需要自定义&#xff0c;原…

android跑马灯效果不起作用,Android跑马灯效果失效问题

Android中的跑马灯效果在特定情况下用的效果很不错&#xff0c;调试的时候发现在2.3系统下&#xff0c;文字跑动正常&#xff0c;后来无意换了另一个手机&#xff0c;4.0以上的系统&#xff0c;发现文字跑动效果失效&#xff0c;研究后发现有两种情况会导致失效。 先看跑马灯效…

Unity 跑马灯效果

一、效果 二、需要动画插件DOTween 三、脚本 1.每个格子上的脚本文件 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; public class MarqueeUIItem : MonoBehaviour {private RawImage m_RawImag…

Android TextView设置跑马灯效果

【前言】 在Textview设置的宽度有限&#xff0c;而需要显示的文字又比较多的情况下&#xff0c;往往需要给Textview设置跑马灯效果才能让用户完整地看到所有设置的文字&#xff0c;所以给TextView设置跑马灯效果的需求是很常见的 一、新手设置跑马灯效果 1、先在xml中给Textvi…

css 实现跑马灯效果

最近有一个跑马灯的效果&#xff0c;需要实现。本来想偷个懒从网上随便拷贝一个&#xff0c;结果发现都不太理想&#xff0c;于是自己动手封装了一个&#xff0c;和大家分享一下。 首先我们要知道跑马灯的具体效果是什么样子的。 效果图 我们通过效果图可以看到&#xff0c;在…

h5跑马灯效果

无缝滚动效果 &#xff0c;外加 手指的移动效果 思路&#xff1a; 1.无缝滚动1个内容区域&#xff0c;复制一下这个内容&#xff0c;追加到改内容的后面&#xff0c;形成无缝滚动的效果 2.手指左滑右滑进行x轴方向的加减 代码如下&#xff1a; <template><div cl…

Android --- 跑马灯效果

1、基于开发者文档的官方说明 跑马灯效果主要使用的控件为TextView&#xff0c;其中涉及的几个标签如下所示&#xff1a; android:ellipsize If set, causes words that are longer than the view is wide to be ellipsized instead of broken in the middle. You will often …

html跑马灯效果

该笔记记录 <marquee> 标签&#xff0c;跑马灯除了使用js实现&#xff0c;还可以使用 marquee标签&#xff0c;自带跑马灯效果。&#xff08;marquee已经 Obsolete了&#xff0c;但是它很好用&#xff09; 基本用法 <!-- marquee是块元素&#xff0c;直接在其内部放…

跑马灯效果如何实现?Smartbi一文助你掌握

大数据时代&#xff0c;人的注意力越来越成为一种稀缺资源&#xff0c;让信息去匹配读者注意力&#xff0c;显然优于让人的注意力去适应信息。因此我们就需要在数据呈现上进行创新。那么如何让数据变得动态化&#xff0c;可视化呢&#xff1f;或许可以尝试一下跑马灯效果。 跑…

滚动动画(跑马灯动画)的几种实现方式

在大屏可视化应用中&#xff0c;滚动动效&#xff08;跑马灯效果&#xff09;也是常见的一种数据展现方式&#xff0c;本章节针对字幕滚动和列表滚动效果做一个小小的总结&#xff0c;结合vue框架&#xff0c;具体展示效果如下&#xff0c;从左至右选型技术分别为&#xff1a;m…

本地KMS虚拟服务器,搭建kms本地服务器

搭建kms本地服务器 内容精选 换一换 Kerberos是一种计算机网络认证协议&#xff0c;它允许某实体在非安全网络环境下通信&#xff0c;向另一个实体以一种安全的方式证明自己的身份。它也指由麻省理工实现此协议&#xff0c;并发布的一套免费软件。软件设计上采用客户端/服务器模…