php服务端接口实现流程,PHP开发的简单的api接口管理系统源码
下面简单介绍一下PHP服务器端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,请求这个URL会返回一些数据,无论是谁用什么编程语言请求都可以得到数据。
那么在需要验证合法性的时候,显然是不可以这样做的。因此,需要一个密钥。这时候往往是POST请求url。
例如,在传递的值为98888的参数中有一个签名符号。当然,生成一个标志的方法有很多种,不可能这么简单。这里只是随便写的,所以服务器收到一个98888的标志。如果我们认同9888是合法的,那么判断此时的标志是否是9888,就可以验证这是一个合法的请求。
但是这么简单,一下子就破解了,设置这个标志毫无意义。因此,应该有一个生成符号的规则。发出请求时,根据这个规则生成一个sign参数,服务器收到请求时,也根据这个规则生成sign。如果生成的标志一致,则表明这是一个合法的请求。每个请求都将由sign验证。
还有一种验证叫token,第一次请求时验证令牌,在一定时间内不需要再次验证。这分为两步。第一步是请求获取令牌的接口获取令牌,第二步是请求特定接口的功能。您需要携带令牌来传递参数。第一次请求令牌时,服务器先存储令牌,然后返回令牌,所以可以通过判断传递的令牌是否存在来验证后面的请求。
许多界面开发使用这两种方法来确保隐私和安全。
还有一点就是PHP的CURL模块经常用来发送POST请求,比如curl _ setopt ($ ch,curl opt _ POSTfields,$post_string)。这里,$ post _ string是传递PHP数组还是json格式的好方法?
如果是传递PHP数组,我这边直接$ _ post [xx]获取参数。如果是传递json格式,我这边好像是用file _ get _ contents (php://input , r )获取传递的json数据,然后解析json得到参数。
什么情况下用第二种?
这个已经在网上问过了,看看你怎么回答:
对于PHP来说,JSON和array有时候真的只是一行代码的区别。如果是我写,可能会直接重用第一个。
我认为如果你希望你的代码简洁,你可以使用第二个。我记得微信的php sdk好像也差不多,是第二个(当然是xml格式的)。
如果对方用面向对象直接序列化的json,用json会让他的代码更简洁。
第一种方法是传递form Form POST协议,PHP会把PHP数组改成HTTP form的格式,跨语言通用。但是,这并不是主流的API协议,而更像是模拟提交形式。
绝大多数API协议将使用JSON POST,
第二种方法是将JSON数据放在HTTP主体中。它也是跨语言的,但作为API更友好。
第一种方法,直接PHP curl,如果数据内容处理不好,数组值里上传了@/xxx/xxx之类的东西,curl会把服务器上的本地文件发出去,要注意防范。
X-www-form-urlencoded是一个RFC标准。没有什么不兼容的。它不仅是跨语言的,也是跨时空的。JSON是近几年发明的。不是标准,只是用起来方便。
以上关于PHP服务器端API原理及实例的讲解(接口开发)都是边肖分享的内容。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。