之前做接口的发现很多不规范的地方,后来改进了一下,记录下思路
-
url命名方式:以固定的上下文根开始,比如http://host/example/api,到api这层,后续路径尽量不要太复杂,如果后续有重新开发的可能性,应该在相应的uri段后增加版本位,如/v1,/v2等。
-
http方法:需要遵守set、get、create、delete的思路,去对应put、get、post、delete等。
-
endpoint:以访问或操作的资源命名,一般应该是名词,根据返回内容不同可以分单复数,最好小写,如
curl -XGET http://host/example/api/persons
这里应该是明确获取多个资源对象
不应该使用类似于代码中的驼峰或帕斯卡等命名方式http://host/example/api/getPersonList
这种写法明显不对
-
方法补充:当通用的http方法无法满足对操作的描述时,如同一个资源可能有两种post,但是创建资源细节有一定区别,这种情况下可以补充http的url或表单参数来进行扩展,比如增加一个method参数,如
http://host/example/api/photo method:upload http://host/example/api/photo method:create
-
传递参数内容:返回内容还是json或者其他数据、上传内容可以是json也可以是form-data
-
认证:token是个不错的方式,具体实现方式很多,不再解释了,也可以一次认证存在session里,适合前端访问的那种。
-
错误信息:尽量用http status code,失败也要返回数据,返回error message。
-
必须支持跨域访问:具体咋做,servlet和各框架的说明里都有
-
最后一点:要有明确的api文档