api的调用方式,key是否明示? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
picasso250
V2EX    PHP

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

  •  
  •   picasso250 2014-01-23 10:36:32 +08:00 3590 次点击
    这是一个创建于 4289 天前的主题,其中的信息可能已经有所发展或是发生改变。


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

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

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

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

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

    举个例子(Javascript):

    findUserById(id, { includeDisabledUsers: true })

    这个方法既然叫ById了,id显然是要提供的,因此id显式传递,后面的includeDisabledUsers是有默认值(false)的,不传也没问题,因此放在一个对象中作为配置项。
    这样的好处是你不会少传了什么导致API不能调用,又保留了可扩展性,需要额外的配置项可以在对象里加
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     920 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 21:16 PVG 05:16 LAX 14:16 JFK 17:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86