php 数据接口,初识 php 接口
这次的这篇文章介绍的是PHP接口的内容,现在分享给大家,也给有需要帮助的朋友一个参考,大家一起过来看一看吧
一. 接口按请求人可以分为两种:
一种是被其他内部项目调用的接口(包括js异步请求的接口和定时程序)。
另一种是对外的接口,主要提供给外部开发者调用的。
两种接口最大区别就是,内部接口不需要太严格的身份验证,而对外接口需要严格的身份验证,加密解密方式各种各样,其中最常见最简单的就是http basic验证,例如我们的大后台弹出的账号和密码弹窗 就是用了basic验证,输入账号和密码才能通过验证。但是如果内部接口涉及到重要的操作,不希望被他人恶意请求的话,还是要做一点加密验证的。
二. 无论是哪一种接口,都应该考虑到下面的问题:
1.安全。参数安全:这个我们有$_INPUT基本就足够了。是否需要身份验证:如果只是内部通知类/回调类的接口的话就算被恶意请求也不会影响数据正常,这种的话可以完全不做验证,举个栗子,我做个一个同步订单状态的接口,里面的流程是,查询订单状态有问题的订单,然后更新这些订单的状态。这种接口不需要返回任何值,就算被坏人恶意调用也不会有毛线影响的,那就根本没必要做身份验证了。所以这个是否加验证是按照接口实际逻辑决定的。
2.能否重复请求。例如某个接口是根据传入的订单号,插入一条数据,需要做好重复请求的判断,避免插入多条数据。
三. 编写接口规范
1. 用 try…catch…结构去写。(主要是 throw 可以随时结束程序,这样很爽~)
2. 返回状态码,不要返回success等于true或者false,如果要编写文档,关于不同错误码的含义也应该写明白,方便调用方查询出错原因。
下面直接看栗子:<?php
$code = 200; // 接口状态码
$name = trim($_INPUT['name']); $age = trim($_INPUT['age']); if (empty($name))
{ $code = 401; throw new Exception('名字不能为空');
} if (!is_numeric($age))
{ $code = 402; throw new Exception('年龄必须由数字组成');
} $database_obj = new database_class(); $res = $database_obj->save($name, $age); if ( !$res )
{ $code = 403; throw new Exception('保存数据失败');
}
$msg = 'ok';
} catch ( Exception $e ) { $msg = $e->getMessage();
}
output_json($code,$data,$msg); // $data可以放置需要返回的数据// output_json函数在大function里面有~如果不想引入大function的话可以复制一份到自己项目// ========END=======?>
转载自:https://www.cnblogs.com/xiaomendelu/p/5819708.html
一. 接口按请求人可以分为两种:
一种是被其他内部项目调用的接口(包括js异步请求的接口和定时程序)。
另一种是对外的接口,主要提供给外部开发者调用的。
两种接口最大区别就是,内部接口不需要太严格的身份验证,而对外接口需要严格的身份验证,加密解密方式各种各样,其中最常见最简单的就是http basic验证,例如我们的大后台弹出的账号和密码弹窗 就是用了basic验证,输入账号和密码才能通过验证。但是如果内部接口涉及到重要的操作,不希望被他人恶意请求的话,还是要做一点加密验证的。
二. 无论是哪一种接口,都应该考虑到下面的问题:
1.安全。参数安全:这个我们有$_INPUT基本就足够了。是否需要身份验证:如果只是内部通知类/回调类的接口的话就算被恶意请求也不会影响数据正常,这种的话可以完全不做验证,举个栗子,我做个一个同步订单状态的接口,里面的流程是,查询订单状态有问题的订单,然后更新这些订单的状态。这种接口不需要返回任何值,就算被坏人恶意调用也不会有毛线影响的,那就根本没必要做身份验证了。所以这个是否加验证是按照接口实际逻辑决定的。
2.能否重复请求。例如某个接口是根据传入的订单号,插入一条数据,需要做好重复请求的判断,避免插入多条数据。
三. 编写接口规范
1. 用 try…catch…结构去写。(主要是 throw 可以随时结束程序,这样很爽~)
2. 返回状态码,不要返回success等于true或者false,如果要编写文档,关于不同错误码的含义也应该写明白,方便调用方查询出错原因。
下面直接看栗子:<?php
$code = 200; // 接口状态码
$name = trim($_INPUT['name']); $age = trim($_INPUT['age']); if (empty($name))
{ $code = 401; throw new Exception('名字不能为空');
} if (!is_numeric($age))
{ $code = 402; throw new Exception('年龄必须由数字组成');
} $database_obj = new database_class(); $res = $database_obj->save($name, $age); if ( !$res )
{ $code = 403; throw new Exception('保存数据失败');
}
$msg = 'ok';
} catch ( Exception $e ) { $msg = $e->getMessage();
}
output_json($code,$data,$msg); // $data可以放置需要返回的数据// output_json函数在大function里面有~如果不想引入大function的话可以复制一份到自己项目// ========END=======?>
相关推荐:
php 数据接口,初识 php 接口相关推荐
- python接口自动化参数化_Python读取txt文件数据的方法(用于接口自动化参数化数据)...
小试牛刀: 1.需要python如何读取文件 2.需要python操作list 3.需要使用split()对字符串进行分割 代码运行截图 : 代码(copy) #encoding=utf-8 #1.r ...
- postman参数化--上一个接口返回的数据作为下一个接口的参数
postman是测试接口经常使用的工具,它是一个很强大的工具.那么在测试中若是存在接口依赖的现象改怎么测试呢? 在使用postman做接口测试的时候,在多个接口的测试中,如果需要上一个接口的返回值作为 ...
- Activity之间的数据传递—实现Parcelable接口
一.单向传递数据和接收 1.可以传递数据类型 传递基本数据类型.字符串和对应的数组 传递Bundle(类似HashMap) 传递对象数据 传递Integer集合.String集合和parcelable ...
- 淘宝关键词搜索商品接口分析商品价格走势(商品列表接口,商品销量接口,商品价格接口,分类ID采集商品数据接口)接口代码对接教程
淘宝关键词搜索商品接口分析商品价格走势(商品列表接口,商品销量接口,商品价格接口,分类ID采集商品数据接口)接口代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口教程wx199701080 ...
- 淘宝关键词搜索采集商品价格销量接口分析商品价格走势(商品列表接口,商品销量接口,商品价格接口,分类ID采集精准商品数据接口)接口代码对接流程
淘宝关键词搜索采集商品价格销量接口分析商品价格走势(商品列表接口,商品销量接口,商品价格接口,分类ID采集精准商品数据接口)接口代码对接流程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程w ...
- taobao.trades.sold.get-查询卖家已卖出的交易数据(根据创建时间),淘宝店铺卖出订单查询API接口,R2接口,oAuth2.0交易接口代码分享
一.taobao.trades.sold.get-查询卖家已卖出的交易数据(根据创建时间),淘宝店铺卖出订单查询API接口,R2接口,oAuth2.0交易接口代码分享 搜索当前会话用户作为卖家已卖出的 ...
- 淘宝H5商品详情数据解析接口sign算法接口代码教程
淘宝H5商品详情数据解析接口sign算法接口代码教程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970108018) key String 是 调用key(必须以GET方式拼接在 ...
- 一天上手Aurora 8B/10B IP核(2)----Aurora概述及数据接口(Framing接口、Streaming接口)
写在前面 系列汇总:一天上手Aurora 8B/10B IP核----汇总篇(直达链接) 1.Aurora 8B/10B 协议 Aurora 协议是一个用于在点对点串行链路间移动数据的可扩展轻量级链路 ...
- 天行数据的开放API接口
天行数据的开放API接口: 接口名称 链接 简介 微信链接转换 https://www.tianapi.com/apiview/89 将临时链接转为永久链接 查询微信全文 https://www.ti ...
最新文章
- 我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承...
- 利用 :placeholder-shown 选择器实现 label 浮动效果
- NeurIPS 2021 | 通过寻找平坦最小值,克服小样本增量学习中的灾难性遗忘
- C语言3中方法判断32还是64位机
- 动态规划算法入门---java版
- java中nextLine(),读取换行符的解决
- 一步步编写操作系统 15 CPU与外设通信——IO接口,下
- java中map如何实现遍历_Java中如何遍历Map对象的4种方法
- Oracle 实用技巧
- IDEA中注释代码,注释符如何不显示在行首
- linux 升级内核为4.10,Linux Kernel 4.10.4 发布下载
- NewSQL登堂入室 数据库厂商掘金行业大数据
- es6异步编程 Promise 讲解 --------各个优点缺点总结
- 【ROS】launch文件详解
- redis存储新闻列表_聊聊Redis使用场景
- MongoDB:常见的面试题和答案
- JavaScript正则表达式给html字符串的img标签增加style样式
- 最小二乘擬合matlab,存在已知协方差情况下的最小二乘解
- 2021年度关键词-ICT网络基础设施建设
- 无锡农商行王宗:敏态转型,实现科技引领业务的华丽转身