api的调用方式,key是否明示?

2014-01-23 10:36:32 +08:00
 picasso250
https://gist.github.com/picasso250/8571845

这两种api设计方式,你喜欢那种?

那种是“正确”的?
3332 次点击
所在节点    PHP
10 条回复
family
2014-01-23 10:43:16 +08:00
没有“正确”✅吧
“友好”就行
dialox
2014-01-23 11:05:39 +08:00
从可读性上看,方法1比较好,可以用“key”来描述参数的含义。另外,方法1也方便未来在接口调用的时候增加参数。
sarices
2014-01-23 11:10:13 +08:00
可以这样,默认value2参数为空,然后必须填写第一个参数,如果第一个参数为数组即表示使用数组传参数
akira
2014-01-23 11:14:07 +08:00
参数数量多,用第一种;参数数量少,用第二种。例如只有一个参数,写key什么的就很多余了。

PS : 两种格式同时支持又不是不行。。。
alex321
2014-01-23 11:16:26 +08:00
方法 1 是传递的数组,扩展性很好。
is_array($temp)///////
judasnow
2014-01-23 13:38:01 +08:00
倾向于第一种,便于参数合法性的检查。
issac
2014-01-23 13:48:55 +08:00
第一种清晰,容易理解;
其实用JSON更方便;
dorentus
2014-01-23 14:16:44 +08:00
没有实际场景,没法说哪种是「正确」的。

如果你不确定的话,可以自己作为自己的用户,做个小项目实际使用一下自己提供的 API 看看感受。
picasso250
2014-01-23 14:46:03 +08:00
@family
@dialox
@sarices
@akira
@alex321
@judasnow
@issac
@dorentus
谢谢大家,我心里好受多了。
otakustay
2014-01-23 16:06:21 +08:00
个人习惯是,设计一个API,其参数分为2类。

第1类是没它不可的,这一类就直接传递,不放在array中
第2类是可有可无的,属配置项,放在array中

举个例子(javascript):

findUserById(id, { includeDisabledUsers: true })

这个方法既然叫ById了,id显然是要提供的,因此id显式传递,后面的includeDisabledUsers是有默认值(false)的,不传也没问题,因此放在一个对象中作为配置项。
这样的好处是你不会少传了什么导致API不能调用,又保留了可扩展性,需要额外的配置项可以在对象里加

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/98070

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX