首页 新闻 赞助 找找看

api的返回值两种方式的选择

0
悬赏园豆:15 [已解决问题] 解决于 2009-01-07 12:36

网站向用户提供api,允许用户基于api进行开发。对于api的返回值现在有两种方式,不知道哪一种好一点

api需要返回的结果很简单,如果运算成功,返回结果(3-8个字符),如果失败,则返回错误代码说明出错原因,如200,201,300等。这种方式的缺点在于用户要维护一张错误代码和错误说明的表

方案1:
通过标志位(true 或 false)来表示运算是否出错,用value来表示运算结果或出错代码
<result>
<status>true 或 false,表示运算是否成功</status>
<value>如果运算成功,返回的是运算结果,否则返回错误代码</value>
<result>

典型的结果

成功:
<result>
    <status>true</status>
    <value>SYE</value>
<result>

出错:
<result>
    <status>false</status>
    <value>202</value>
<result>


方案2:
通过状态代码来表示运算是否出错(和http协议相似),用value来表示运算结果或错误原因的说明。
其中状态代码100表示运算成功,其他这表示出错

缺点在于因为错误原因是中文,客户要用UTF8编码


<result>
<status>运算状态代码</status>
<value>如果状态代码=100,返回的是运算结果,否则返回错误原因的说明</value>
<result>

典型的结果

成功:
<result>
    <status>100</status>
    <value>YUS</value>
<result>

出错:
<result>
    <status>201</status>
    <value>参数太少了</value>
<result>

 

问题补充: 我说的编码问题: 在我这边用了utf-8编码,那要求客户也适用这种编码,客户也需要适用utf8,可能对客户会不方便。
zitiger的主页 zitiger | 初学一级 | 园豆:140
提问于:2009-01-05 12:12
< >
分享
最佳答案
0

推荐方案2,返回一个状态码。但错误信息和正确结果不要共用一个value节点。应该给错误信息但提供一个error节点。

我在公司就负责写API,已经在多套API中应用了这种方式,效果奇好。

Anders Liu | 菜鸟二级 |园豆:230 | 2009-01-05 15:41
其他回答(2)
0

推荐方案2,这个毕竟有成熟的模型在使用。提供的信息也比较清晰,对于api的使用者比较友好。此外你说的编码问题是什么意思,为什么会有编码问题呢,在服务器端也是用utf-8编码会有问题吗?

GUO Xingwang | 园豆:3885 (老鸟四级) | 2009-01-05 13:15
0

我的做法,正确时返回正确格式的xml,可能有各种各样的格式。如果发生了错误,则返回一定格式的xml例如

<error code="101" message="error message"/>

用户在调用时,需要先判断是不是出错了,然后再进行对应的处理。

玉开 | 园豆:8822 (大侠五级) | 2009-01-05 18:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册