V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
picasso250
V2EX  ›  PHP

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

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


    这两种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  
       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   ·   实用小工具   ·   962 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:00 · PVG 07:00 · LAX 15:00 · JFK 18:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.