网站向用户提供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>
推荐方案2,返回一个状态码。但错误信息和正确结果不要共用一个value节点。应该给错误信息但提供一个error节点。
我在公司就负责写API,已经在多套API中应用了这种方式,效果奇好。
推荐方案2,这个毕竟有成熟的模型在使用。提供的信息也比较清晰,对于api的使用者比较友好。此外你说的编码问题是什么意思,为什么会有编码问题呢,在服务器端也是用utf-8编码会有问题吗?
我的做法,正确时返回正确格式的xml,可能有各种各样的格式。如果发生了错误,则返回一定格式的xml例如
<error code="101" message="error message"/>
用户在调用时,需要先判断是不是出错了,然后再进行对应的处理。