企业网站建设宣贯,软件工程月薪一般多少,新网$网站优化,克拉玛依市建设局官方网站下面小编就为大家分享一篇PHP服务器端API原理及示例讲解(接口开发)#xff0c;具有很好的参考价值#xff0c;希望对大家有所帮助
相信大家都做过PHP请求电商API接口获取数据#xff0c;比如淘宝平台商品API接口#xff0c;订单接口#xff0c;京东接口#xff0c;1688接…下面小编就为大家分享一篇PHP服务器端API原理及示例讲解(接口开发)具有很好的参考价值希望对大家有所帮助
相信大家都做过PHP请求电商API接口获取数据比如淘宝平台商品API接口订单接口京东接口1688接口跨境电商平台亚马逊接口阿里巴巴接口LAZADA接口微信公众平台天气查询快递查询等有的需要参照接口文档根据签名算法构造sign签名或者设置token然后通过curl发送POST请求带上参数获得返回数据一般是json或者xml格式。
但是现在的情况反过来了我们要开发PHP服务器端的API接口也就是别人请求我们我们验证请求合法性并查询数据返回。
这种情况其实在手机app开发中用到手机APP应用往往需要请求PHP接口获取数据不过这个请求一般是不用经过验证的根据不同的功能请求不同的url通常也是get方式传参数直接获取数据。
本文简单讲讲服务器端验证请求合法性的方法和接收参数的方式。
简单的get请求如http://www.…….com/api/get_cat?id2请求这个网址会返回一些数据无论是谁用什么编程语言请求都能得到数据。
那么在需要验证合法性的情况下这样显然是不行的。所以需要一个秘钥这个时候往往用POST方式请求url。
公共参数
名称类型必须描述keyString是调用key必须以GET方式拼接在URL中secretString是调用密钥api_nameString是API接口名称包括在请求地址中[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认yes将调用缓存的数据速度比较快result_typeString否[json,jsonu,xml,serialize,var_export]返回数据格式默认为jsonjsonu输出的内容中文可以直接阅读langString否[cn,en,ru]翻译语言默认cn简体中文versionString否API版本 请求参数
请求参数num_iid652874751412is_promotion1
参数说明num_iid:淘宝商品ID is_promotion:是否获取取促销价 响应参数
Version: Date:2022-04-04
名称类型必须示例值描述 item item[]1宝贝详情数据
比如传递的参数中有个签名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,CURLOPTPOSTFIELDS,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这种是近几年想出来的不是标准用着方便而已。
以上这篇PHP服务器端API原理及示例讲解(接口开发)就是小编分享给大家的全部内容了.