设计时需要考虑的问题(webAPI)
1、根据api接口访问路径定义好controller和action。
2、记录操作日志。包含接口入参、出参、异常以及重要的节点数据(数据库返回、第三方接口返回、重要的私有变量值)
3、入参合法性检查。非空检查。需要校验身份证、邮箱、手机号、网址等值。
4、定义好接口的返回状态和消息。建议0表示成功,非0表示失败,且不同的状态值必须区分好。
可包括数据库操作、第三方接口调用、入参校验、程序异常、成功等分类。
5、选择合适的HTTP操作,get还是post需要根据场景进行选择。
6、参数传递方式确定,get还是post还是request请求头。
7、定义好接口出入参实体。对于返回值建议包含status(状态)、msg(消息)、data(数据)等字段,没返回数据时,data取值null。
8、考虑返回数据是否需要排序、分页等操作。
9、对于返回列表的数据需要考虑好没数据时是返回错误还是返回空集合,但是接口返回成功。
10、避免由于判断分支过多导致if-else嵌套过深,在非法的条件下进行return。
11、多层嵌套if-else时,保持判断逻辑的一致性,所有条件都判真,或者都判非。
12、确定客户端cookie管理方案。是签名Cookie还是令牌Cookie。
13、确定是实现同步接口还是异步接口。
14、确认图片文件的传输方式。是base64还是文件流还是multipart。
15、引入异常重试机制。比如调用第三方接扣、数据库调用等。
16、确定异常的处理方式。api不要抛出异常,内部方法可以抛出异常,在api层捕获处理。
17、活用ActionFilterAttribute进行日志记录等操作。
18、接口返回字段均为小写或者大写。避免命名混乱导致的BUG。
19、统一接口出入参中时间格式
设计时需要考虑的问题(webAPI)的更多相关文章
- 一篇文章帮你梳理清楚API设计时需要考虑的几个关键点
本文作者是Enchant的架构师,他最近研究了Netflix.SoundCloud.谷歌.亚马逊.Spotify等公司的微服务实践,并根据自己的理解总结出了一套适用于现代Web和云技术的微服务实战经验 ...
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...
- 保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事
保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事 10 things to consider when securing an embedded 802.11 Wi-Fi device 随着 ...
- [No0000AE]在 Visual Studio 中调试 XAML 设计时异常
在 Visual Studio 中进行 WPF, UWP, Silverlight 开发时,经常会遇到 XAML 设计器由于遭遇异常而无法正常显示设计器视图的情况.很多时候由于最终生成的项目在运行时并 ...
- 使用 T4 文本模板生成设计时代码
使用设计时 T4 文本模板,您可以在 Visual Studio 项目中生成程序代码和其他文件. 通常,您编写一些模板,以便它们根据来自模型的数据来改变所生成的代码. 模型是包含有关应用程序要求的 ...
- ActiveReports 9实战教程(2): 准备数据源(设计时、运行时)
原文:ActiveReports 9实战教程(2): 准备数据源(设计时.运行时) 在上讲中<ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 ...
- C#winform自定义控件模拟设计时界面鼠标移动和调节大小、选中效果
要想玩转Winform自定义控件需要对GDI+非常熟悉,对常用的控件有一些了解,好选择合适的基类控件来简化. 要点说明及代码 1)定义接口: using System; using System.Wi ...
- android官方技术文档翻译——设计时布局属性
本文译自androd官方技术文档<Designtime Layout Attributes>:http://tools.android.com/tips/layout-designtime ...
- winform窗体运行时的大小和设计时不一致
窗体设置的尺寸为1946*850,而电脑分辨率是1920*1280 按说宽度已经超过屏幕大小很多了,应该显示占满屏幕宽度才对,但是运行时宽度只有设计时的一半 高度最多只能是1946像素,再拉大也不管用 ...
随机推荐
- JsonMessageView工具类
前言 工具类 示例: 前端发送ajax请求 springmvc控制层接收请求并处理请求 前言: 在工作中使用springmvc web框架时常常会发送一个ajax请求,我们在控制层接收到请求并 ...
- ReactNative实现GridView
ReactNative内置了ListView组件但是没有类似GridView这样的组件.利用一些已经有的属性是可以实现GridView的,利用ContentContainerStyle的属性然后配合样 ...
- docker容器添加对外映射端口
一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [contain ...
- json与java对象的转换,以及struts2对json的支持,实现ajax技术
这两天学的东西有点多,今天抽个时间写下来,以此作为激励,这两天学了json,ajax,jQuery 一.使用第三方的工具java转换为json类型 首先就是java类型转换为json对象,首先要导入第 ...
- Basic Example using SMTP (for PHPMailer v5.0.0 and up)
sample as below: require_once('../class.phpmailer.php'); //include("class.smtp.php"); // o ...
- 2019年最新超级有趣好玩的html+css网页布局课程,前端入门基础,html5+css3零基础入门课程-黑马程序员pink老师精心录制
大家好,我是黑马程序员pink老师!! 本次视频是前端零基础入门的课程,pink老师采取有趣好玩讲法,带你快乐的学习枯燥的html+css知识,学完之后让你能快速布局pc端页面.代码也可以讲的好玩有趣 ...
- 《构建之法》MSF&需求分析
第七章 MSF MSF基本原则 推动信息共享与沟通 为共同的远景而工作 充分授权和信任 各司其职,对项目共同负责 交付增量的价值 保持敏捷,预期和适应变化 投资质量 学习所有的经验 与顾客合作 MSF ...
- Docker service update更新不成功的问题
一.基本信息 1.Docker版本 [root@ip---- ~]# docker --version Docker version , build a872fc2f86 2.系统版本 [root ...
- Ubuntu16.04安装java6(jdk 1.6)
目录 下载安装包 安装 移动到指定位置并设置版本 设置环境变量 切换java版本 下载安装包 先到官网下载安装包. 安装 输入命令 chmod 777 jdk-6u45-linux-x64.bin s ...
- C语言入门-结构类型
一.声明结构类型 #include <stdio.h> int main(int argc, char const *argv[]) { // 声明结构类型 struct date { i ...