PHP服务器端电商API原理及示例讲解(电商接口开发/接入)
下面小编就为大家分享一篇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?id=2,请求这个网址会返回一些数据,无论是谁用什么编程语言请求都能得到数据。
那么在需要验证合法性的情况下这样显然是不行的。所以需要一个秘钥,这个时候往往用POST方式请求url。
公共参数
| 名称 | 类型 | 必须 | 描述 | 
|---|---|---|---|
| key | String | 是 | 调用key(必须以GET方式拼接在URL中) | 
| secret | String | 是 | 调用密钥 | 
| api_name | String | 是 | API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等] | 
| cache | String | 否 | [yes,no]默认yes,将调用缓存的数据,速度比较快 | 
| result_type | String | 否 | [json,jsonu,xml,serialize,var_export]返回数据格式,默认为json,jsonu输出的内容中文可以直接阅读 | 
| lang | String | 否 | [cn,en,ru]翻译语言,默认cn简体中文 | 
| version | String | 否 | API版本 | 
请求参数
请求参数:num_iid=652874751412&is_promotion=1
参数说明: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原理及示例讲解(接口开发)就是小编分享给大家的全部内容了.
相关文章:
PHP服务器端电商API原理及示例讲解(电商接口开发/接入)
下面小编就为大家分享一篇PHP服务器端API原理及示例讲解(接口开发),具有很好的参考价值,希望对大家有所帮助 相信大家都做过PHP请求电商API接口获取数据,比如淘宝平台商品API接口,订单接口,京东接口,1688接…...
Spring Cloud应用- Eureka原理、搭建
初期对Spring Cloud的学习以应用搭建为主,所以内容不会太枯燥。 一直以来,自以为Spring全家桶的学习中,Spring framework是基础中的基础,部分内容也还是必须要读源码去理解底层原理,SpringMVC、SpringBoot,…...
Servlet 设置启动时机(web.xml方式和@WebServlet方式)
1、通过web.xml方式 5)Servlet的启动时机 - 默认情况下,servlet是不会随着容器的启动而被实例化的,只有当第一次给我发请求时才会被实例化那么,这种情况对于第一次请求是不公平的因此,为了提高用户体验度,提高服务器的…...
一个使用uniapp+vue3+ts+pinia+uview-plus开发小程序的基础模板
uniappuviewPlusvue3tspiniavite 开发基础模板 使用 uniapp vue3 ts pinia vite 开发基础模板,拿来即可使用,不要删除 yarn.lock 文件,否则会启动报错,这个可能和 pinia 的版本有关,所以不要随意修改。 拉取代码…...
Kali安装docker
第一步:kali添加Docker官方的GPG密钥 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add 第二步:进入root更新源: su rootecho ‘deb https://download.docker.com/linux/debian stretch stable’> /etc/ap…...
Maven第七章:Maven工程最佳实践
Maven第七章:Maven工程最佳实践 前言 本章重点,通过一个maven工程最佳实践案例,熟悉和掌握maven在项目中的应用基本思路,让你的技能值瞬间暴涨。 最佳实践 确定项目的坐标和依赖 在Maven中,项目的坐标定义了项目的唯一标识符,包括groupId、artifactId和version。因此,在…...
【深度学习】【pytorch】对卷积层置零卷积核进行真实剪枝
最近需要对深度学习模型进行部署,因此需要对模型进行压缩,博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 前言卷积层剪枝总结 前言 深度学习剪枝(Pruning)是一种用于减少神经网络模型大小、减少计算量和提高推理效率的技术,通过去除神经…...
机器人仿真-gazebo学习笔记(3)URDF和机器人模型
1.URDF简介 URDF(统一机器人麦哦书格式)是ROS中的重要机器人模型描述格式,ROS提供了URDF文件的c解析器,可以解析URDF文件中使用XML格式的机器人模型。 urdf - ROS Wiki 自己查阅ros官方对URDF的介绍其实会强于大部分网上流传的文章。 1.URDF文件常用的…...
lua-resty-request库写入爬虫ip实现数据抓取
根据提供的引用内容,正确的库名称应该是lua-resty-http,而不是lua-resty-request。使用lua-resty-http库可以方便地进行爬虫,需要先安装OpenResty和lua-resty-http库,并将其引入到Lua脚本中。然后,可以使用lua-resty-h…...
gitlab Activating and deactivating users
原文:Redirecting... Deactivating a userActivating a user Activating and deactivating users GitLab 管理员可以停用和激活用户. Deactivating a user 在 GitLab 12.4 中引入 . 为了临时阻止没有最近活动的 GitLab 用户访问,管理员可以选择停用…...
linux入门到精通-第五章-动态库和静态库
目录 参考概述1、静态链接2 、动态链接3 、静态、动态编译对比 静态库和动态库简介传统编译 静态库制作和使用1、创建静态库的过程2、使用静态库 动态库制作和使用1、创建动态库的过程1)、生成目标文件,此时要加编译选项:-fPIC (f…...
markdown 如何更改字体以及颜色等功能
markdown 是IT人士写文档的常用方式,但是markdown默认又不支持颜色字体等特殊功能,所以呢想实现字体颜色高亮等特殊功能,实现的方法呢就是使用HTML,所以将部分文字改成HTML代码就行 颜色 <font color#0099ff>color #0099f…...
一次cs上线服务器的练习
环境:利用vm搭建的环境 仅主机为65段 测试是否能与win10ping通 配置转发 配置好iis Kali访问测试 现在就用burp抓取winser的包 开启代理 使用默认的8080抓取成功 上线...
STM32-高级定时器
以STM32F407为例。 高级定时器 高级定时器比通用定时器增加了可编程死区互补输出、重复计数器、带刹车(断路)功能,这些功能都是针对工业电机控制方面。 功能框图 16位向上、向下、向上/向下自动重装载计数器。 16位可编程预分频器,…...
三季度业绩狂飙后,贝泰妮将开启集团化运营的“中场战事”?
双十一前夕,贝泰妮交出了一份亮眼的答卷。 得益于销售端和研发端的发展动能强劲,第三季度贝泰妮营收10.64亿元,同比增长25.77%;扣非净利润1.34亿元,同比增长39.88%。 如此亮眼的业绩,自然引得资本市场侧目…...
快速了解:什么是优化问题
1. 定义 数学优化问题是:在给定约束条件下,找到一个目标函数的最优解(最大值或最小值)。 2. 快速get理解 初学者对优化技术陌生的话,可以把 “求解优化问题” 理解为 “解一个不等式方程组”,解方程的。…...
Unity在Project右键点击物体之后获取到点击物体的名称
Unity在Project右键点击物体之后获取到点击物体的名称 描述: 在Unity的Project右键点击物体之后选择对应的菜单选项点击之后打印出物体的名称 注意事项 如果获取到文件或者预制体需要传递objcet类型,然后使用 GameObject.Instantiate((GameObject)se…...
【带头学C++】----- 三、指针章 ---- 3.7 数组指针
3.7 数组指针 1.数组指针的概述 数组指针是一个指向数组的指针变量,是用来保存数组元素的地址。在C/C中,数组名代表了数组的首地址,可以被解释为一个指向数组第一个元素的指针。因此,一个指向数组的指针可以通过数组名来获…...
Ubuntu20.04安装CUDA、cuDNN、tensorflow2可行流程(症状:tensorflow2在RTX3090上运行卡住)
最近发现我之前在2080ti上运行好好的代码,结果在3090上运行会卡住很久,而且模型预测结果完全乱掉,于是被迫研究了一天怎么在Ubuntu20.04安装CUDA、cuDNN、tensorflow2。 1.安装CUDA(包括CUDA驱动和CUDA toolkit,注意此…...
untiy打开关闭浏览器
最简单的打开方法,只能打开不能关闭,自动打开默认浏览器 Application.OpenURL("https://www.bilibili.com/");打开关闭谷歌浏览器 using System.Diagnostics;private static Process web;if (web null)//打开 {web Process.Start("Chr…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
