素材牛VIP会员
API如何设计
 钢***侠  分类:Java代码  人气:816  回帖:8  发布于6年前 收藏

阿里面试官问,你如何设计一个后台接口,貌似和模型,架构,有关系,考虑安全问题,面试官也没提示,如果是我想的这样的话,那该如何去答这块问题。设计一个面向外部的接口,貌似和API层次,数据模型,基础服务模型,业务模型,等等有关系,其实我也不知道面试官想考察什么,他也不说。汗死。也没具体场景。

 标签:java

讨论这个帖子(8)垃圾回帖将一律封号处理……

Lv2 入门
适***的 其它 6年前#1

自己问题提的烂还不让人喷...

Lv7 码师
ph***16 JAVA开发工程师 6年前#2

流氓。。
其实他是想问你你之前做API的时候都考虑什么问题呢?

Lv4 码徒
gy***23 JAVA开发工程师 6年前#3

是指web service还是sdk还得封装的模块还是什么 ..

Lv5 码农
mo***99 产品经理 6年前#4

撇开所有的业务场景不考虑,分享一个我之前在内部做的分享文章。
远程接口设计经验分享

回到题主的疑问,阿里面试官是否在刷流氓。
我作为阿里的一个技术人员,虽然很少做面试官,不过我能打开从这个问题中猜测出当事面试官的主要考察方向。

所以这个技术问题一个开放性的问题,看你的技术知识范围和边界。

1、你可以选择抛开业务场景谈论如何设计一个API甚至一个API的框架,如果一个接口被设计为对外部的接口,那从框架上还要考虑到命名策略、向下兼容方案、用户鉴权、调用流控等技术框架引入。

2、你也可以选择从领域模型进行切分,比如更细粒度的追问业务场景,根据领域划分自己的API设计,并说明清楚你自己的思考。

举个例子:你可以针对面试官的问题,追问场景,并细化到一个具象的领域。这个过程其实也体现了你的思考方式。假设能具象到发布商品接口。发布一个商品,有一个公共的API,这个API兼容的考虑到了大部分商品所需要填写的信息;但如果要发布一个网游的商品,这里面所需要填写的信息肯定和发一个连衣裙存在非常大的差异,请问你什么时候会考虑为这种场景独立一个API,这个度你怎么理解怎么把控。

当然了,还有很多细节上的事情需要体现在你的API设计中。代码毕竟是人写的,接口与接口之间的交互背后其实是团队与团队之间的协作,如何通过一个合理的API提高团队协作的效率,利益边界划分的清晰,形成共赢的局面,是非常讲究的一个过程。

另外,就算这个问题退化为简单的机器与机器交互的性能,也有非常多的关键点要挖。

利益相关声明:我是阿里技术员工

Lv6 码匠
飞***猪 交互设计师 6年前#5

脱离情景问这些简直是耍流氓啊。。

Lv5 码农
li***56 移动开发工程师 6年前#6

怎么设计一个API这需要结合业务需求,如一楼说的,没有需求,脱离情景,这是在耍流氓。
怎么设计好一个API,这需要长期经验累积(也就是所谓的空谈)。
参考: http://blog.jobbole.com/42317/

update 2016-1-13 10:17:40

面试官就是等你回答:你没跟我说需求,你这是耍流氓

Lv1 新人
10***19 学生 6年前#7

考虑具体业务细节,合理实际API

Lv5 码农
ga***et 移动开发工程师 6年前#8

主要是想考察你平时有没有积累和总结吧。面试的时候,可以自己给出场景,自己分析,给出答案。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取