本篇文章给大家谈谈接口设计,以及接口设计原则对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享接口设计的知识,其中也会对接口设计原则进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
接口设计的主要依据是什么.接口设计主要包括哪些内容
接口设计的主要依据是形象;因为在平面设计中,一组相同或相似的形象组成,其每一组成单位成为基本形,基本形是一个最小的单位,利用它根据一定的构成原则排列、组合、便可得到最好的构成效果。
接口设计主要包括:
1.形状的渐变:一个基本形渐变到另一个基本形,基本形可以由完整的渐变到残缺,也可以由简单到复杂,由抽象渐变到具象;
2.方向的渐变:基本形可在平面上作有方向的渐变;
3.位置的渐变:基本形作位置渐变时需用骨架,因为基本形在作位置渐变时,超出骨架的部分会被切掉;
4.大小的渐变:基本形由大到小的渐变排列,会产生远近深度及空间感;
5.色彩的渐变:在色彩中,色相、明度、纯度都可以出渐变效果,并会产生有层次感的美感;
6.骨格的渐变:是指骨格有规律的变化,使基本形在形状、大小、方向上进行变化。划分骨格的线可以做水平、垂直、斜线、折线、曲线等个总骨格的渐变。渐变的骨格精心排列,会产生特殊的视觉效果,有时还会产生错视和运动感。
扩展资料:
接口设计随着现代科技的发展、知识社会的到来、创新形态的嬗变,设计也正由专业设计师的工作向更广泛的用户参与演变,以用户为中心的、用户参与的创新设计日益受到关注,用户参与的创新2.0模式正在逐步显现。
用户需求、用户参与、以用户为中心被认为是新条件下设计创新的重要特征,用户成为创新2.0的关键词,用户体验也被认为是知识社会环境下创新2.0模式的核心。
设计不再是专业设计师的专利,以用户参与、以用户为中心也成为了设计的关键词,Fab Lab、Living Lab等的创新设计模式的探索正在成为设计的创新2.0模式。
接口设计是什么
接口设计一般出现在软件开发
接口设计的概要设计阶段,概要设计要根据需求划分模块,而模块之间
接口设计的联系就是通过定义接口实现的。例如有模块A,B。A,B互相不知道对方实现的细节,当A要用到B中的功能时,就要使用模块B提供的外部接口,接口可以理解为一些功能函数的原型,包括函数名,参数列表和返回值。
接口设计评审规范
本接口设计规范接口设计,参考了restfull的部分设计理念。
资源是 Restful API 的核心元素,所有的操作都是针对特定资源进行的。
任何事物,只要有被引用到的必要,它就是一个资源。资源可以是实体(例如手机号码),也可以只是一个抽象概念(例如价值) 。下面是一些资源的例子:
Github 可以说是这方面的典范,下面接口设计我们就拿 repository 来说明。
接口设计我们可以看到几个特性:
接口名称应简单明了,望文知意,接口简介中,需描述清楚接口的具体业务功能。
原则上,接口命名规范整体采用“名词”+“动词”形式
接口返回或者操作的是单个资源对象,采用名称的单数形式命名,如:/user/add,/user/del,/user/get
接口返回或者操作的是多个资源对象,采用名称的复数形式命名,如:/users/get
针对同一个接口,根据实际业务需求,为解决接口兼容性问题,可以对接口进行版本扩展,命名规范为“名词”+“动词”+“版本号”形式,版本号采用v1、v2、v3形式命名
例:/user/login ,/user/login/v1
接口返回值,将统一采用如下格式:
{
"sign": "f64b967289ac4d8cbfdc22ad30ec9d09",
"content": "{}",
"timestamp": 1561204602005,
"desc": "成功!",
"code": "000",
"accessToken": "83BAED4DAE9DEF783FDE243F4B5C"
}
sign:返回值签名验签(如果需要)
如遇第三方合作等特殊情况,根据实际情况进行设计。
一个接口只做一件事情
连字符"-"一般用来分割URI中出现的字符串(单词),来提高URI的可读性,使用下划线"_"来分割字符串(单词)可能会和链接的样式冲突重叠,而影响阅读性。
根据RFC3986定义,URI是对大小写敏感的,所以为了避免歧义,接口设计我们尽量用小写字符。
例,针对金额,都统一为amount,而不是有的amount,有的money。
如是对老接口进行改动,需考虑接口的兼容性,包括字段的增减、字段名称调整、字段类型的调整、字段值内容长度的调整,字段值取值范围的调整等。
接口一旦发布就不易修改,要保持兼容性,拼写错误也不能改了,所以要仔细检查拼写。
著名悲剧:unix 的 creat。
creat是一个函数,可以用来创建一个文件并以只写的方式打开。
参数命名最好是定语+名词
比如 fileName, maxSize, textColor,而不是用name、size、colour
不要用生僻单词,也不要用汉语拼音
除非是约定俗成已经被广泛使用的缩写,否则老老实实用完整拼写。
比如 有open就要有close,有login就要有logout,这些单词基本是固定搭配的,使用者就很容易理解。
例,业务需要vip用户,接口不允许设计为isVipUser,而应该设计为获取用户的会员等级接口,/user/level/get,这样保证接口的通用性和扩展性
分页相关接口参数命名统一:
pageSize:每页记录条数
pageNum:当前页数
totalPageNum:总共页数
统一以分为单位进行传递
建议统一以时间毫秒数进行传递,避免前后端或者各种场景下日期格式不统一
(转)对外接口设计规范
1、接口禁止方法重载,重载会在做服务SLA控制,日志监控等方面带来不便
2、接口注释必须清晰地表达如何使用,接口是同步还是异步,服务内容,参数校验规则(精度、长度、取值范围等),返回值信息,异常情况;使用场景有要求的需要重点这几个方面描述
a)不同使用场景,在注释中区分描述
b)特定使用场景下的业务规则描述
c)特定使用场景下的注意事项描述
格式上参照注释规范{*}
3、接口返回值中属性禁止使用枚举,如果返回值属性是枚举类型,会为后期升级埋下隐患(由于枚举序列化的特性导致
删除枚举值和增加枚举值都可能导致客户端反序列化失败),建议提供String类型,取值范围可以通过枚举来告诉客户端
禁止声明方式
建议声明方式
/** 强制还款标志,取值范围见{@link EnforceFlagEnum}*/
private String enforceFlag;
4、接口参数涉及取值范围选择的(比如交易码,渠道类型,身份标识),需提供对应的常量给客户端使用,谨慎使用枚举做入参
唯一性控制属性:a)如接口请求参数包含业务唯一性控制字段,需要对相关字段以及唯一性控制方式进行特别说明
b)若在唯一性控制基础之上,涉及相关业务幂等控制处理,需要进行相关详细描述
5、接口方法确保不对外抛出异常,异常情况需要通过错误码通知客户端,处理失败也需要有返回值,返回值实现可参考EcBaseResult及其子类实现
POM依赖
9、接口返回值中的方法尽量只提供基本属性的get set方法,不要提供有业务规则含义的方法(因为业务逻辑的变化会要求客户端升级jar包版本)
10、操作类的接口务必考虑幂等性控制,因为网络重发,客户端异常等都可能会引起重复调用,严重的可能会引起资损
根据业务约定的部分唯一性字段,对多次请求的数据判断是否重复提交的判断依据,比如通过外部订单号outOrderNo做唯一性控制,在唯一性控制的基础上,对请求中的其他字段进行判断,
如果全部业务数据(或关键业务数据)和已经落库的数据一致,则请求一次和请求多次都不会对业务处理产生影响,返回结果不变,
如果outOrderNo关联的其他信息与系统已经持久化的数据不一致则提示XXX参数与原先的数据不一致。
11、接口命名统一以Facade结尾,个别的SPI接口可以使用别的结尾词以便更好地表达SPI的要求,SOFA框架系统对外接口统一存放在xxx-common-service-facade
这个bundle下
12、接口必须提供有效的监控日志,配置监控报警规则监控日志输出见日志规范
13、敏感信息:接口返回对象属性字段包含敏感信息,需要做好标识,进行相关提示避免客户端打印到日志中去
金额:接口返回对象属性涉及到金额,需要描述金额的单位以及对应的币种 统一使用支付宝金额类com.iwallet.biz.common.util.money.Money
Money所在jar坐标
Django REST framework框架之GET, POST, PUT, PATCH, DELETE等API请求接口设计
一、API接口功能需求:设计一些接口URL
接口设计,让前端/客户请求这个URL去获取数据并显示,更改数据(增删改查),达到前后端分离
接口设计的效果
二、设计逻辑:通过http协议请求方式GET、POST、PUT、PATCH、DELETE设计符合RESTful规范的api接口也就是URL
三、简易源码:
3.序列化serializers
#导入模型类和rest_framework序列化模块serializers
from .models import Article
from rest_framework import serializers
#定义序列化类,使用继承ModelSerializer方法
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article #指定序列化的模型类
fields = '_ all _' #选取序列化字段,此处可自行选取字段
4.视图函数views
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from .models import Article
from .serializers import ArticleSerializer
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
#调用csrf装饰器csrf_exempt模块,解决跨域访问问题
#JSONRenderer它将Python的dict转换为JSON返回给客户端
#JSONParser 负责将请求接收的JSON数据转换为dict
#写法一
#在需要跨域的视图上调用装饰器@csrf_exempt
@csrf_exempt
def article_list(request):
if request.method == 'GET':
arts = Article.objects.all() #获取模型类数据
ser = ArticleSerializer(instance=arts,many=True) #序列化数据instance
#下一步用rest_framework方法里的JSONRenderer方法渲染数据
json_data = JSONRenderer().render(ser.data)
return HttpResponse(json_data,content_type='application/json',status=200)
#写法二
class JSONResponse(HttpResponse):
def _ init (self,data,**kwargs):
content = JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self)._ init (content,**kwargs)
#根据id进行增删改操作接口
@csrf_exempt
def article_detail(request,id):
try:
art = Article.objects.get(id=id)
except Article.DoesNotExist as e:
return HttpResponse(status=404)
备注:
*写法二中定义JSONResponse类将返回的数据data与content_type返回类型做了封装
*API接口
GET/POST
api/articles
GET/PUT/PATCH/DELETE
api/articles/1
*Postman测试效果图
关于接口设计和接口设计原则的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
接口设计的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于接口设计原则、接口设计的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
评论列表
111
@11 三十三