微服务中restful 风格的url的注意事项

以下总结均出于自身开发体验
1、url纯命名规范:url中不带大写字母(这里说的url是没有urlencode过的url),多个单词用下划线分隔(广大做java的记得不要在url上去用驼峰命名)。
2、url命名应该是以资源为导向的命名,对资源的操作是由HttpMethod(get、post、put、delete)来决定。所以一般来说url上的单词都应该是名词,一定不要是动词。举个栗子:
对于User这个用户的操作:
新增用户:http://localhost:8768/user post方法提交;
修改用户:http://localhost:8768/user put方法提交;
删除用户:http://localhost:8768/user/123456 delete方法提交;
查询用户:http://localhost:8768/user get方法提交;
不要写成http://localhost:8768/get_user 这样的,因为我们是以资源(user)为导向的restful风格。
3、url不要过于简单,在一个项目里面,Controller一般都不会很少,所以要注意对于不同资源的操作作分类,否则会造成极大的不便。下面实例说明一下。
根据id查询用户接口http://localhost:8768/{id} url这样来写似乎也没什么毛病。如果仅仅是一个UserController其中的方法这样写确实没有什么问题。不过如果系统中此时有一个学校相关的Controller,SchoolController,而这个里面刚好有一个查询所有学校的接口http://localhost:8768/school 那么问题就来了,系统没有办法区分这2个接口了,谁知道是不是有一个id为“school”的用户呢?
所以比较好的实践是,接口还是以资源为导向,上面的根据id查询用户的接口应该写成:http://localhost:8768/user/{id} 这样就不会出问题了。
另外,一定要杜绝root形式(root形式是我自己取的名字,意思就是端口后面直接一个“/”,有点像根目录)的url:http://localhost:8768/{id} 这个url势必会与任何已定义的只有一级的url(如上面的http://localhost:8768/school)产生冲突。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐