api的调用方式,key是否明示? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
picasso250
V2EX    PHP

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

  •  
  •   picasso250 Jan 23, 2014 3808 views
    This topic created in 4480 days ago, the information mentioned may be changed or developed.


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

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

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

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

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

    举个例子(Javascript):

    findUserById(id, { includeDisabledUsers: true })

    这个方法既然叫ById了,id显然是要提供的,因此id显式传递,后面的includeDisabledUsers是有默认值(false)的,不传也没问题,因此放在一个对象中作为配置项。
    这样的好处是你不会少传了什么导致API不能调用,又保留了可扩展性,需要额外的配置项可以在对象里加
    About     Help     Advertise     Blog     API     FAQ     Solana     2595 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 11:34 PVG 19:34 LAX 04:34 JFK 07:34
    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