GraphQL实战:写给全栈工程师们
上QQ阅读APP看书,第一时间看更新

1.4.5 RESTful API的好处是什么

首先是简单直接。客户端要什么资源,直接能够体现在URL上,一目了然,也方便服务器端进行监控和缓存。

其次是扩展性强。用REST架构管理一系列资源,比如用户、帖子、回复、图片等,那RESTful API就是对这些资源进行增删改查(CRUD)。为每种顶层资源,比如用户、文章、商品等,分别提供一组Endpoint(是以URL的形式,例如/user/123,/users?city=Shanghai等)。如果新增资源种类,只要新增一组Endpoint就可以满足需求。有互联网应用研发或者产品经验的读者可能会有所体会,互联网应用中经常会为某种资源增添一些字段来满足新的功能需求,比如,为用户添加一个联系方式等。在RESTful API设计中,会结合使用一些扩展性非常强的数据格式,例如JSON,可以应付现在和将来的各种增减字段的需求变化。所以说,一般认为RESTful是一种异常强壮的设计,如果开发一套RESTful API,可能十年八年都不用推倒重来,例如Twitter的Web API。

还有一个很重要的优点,就是兼容性强。因为极少会修改RESTful API的URL,如果有新的资源种类,只会添加,而不会修改已存在的URL,从而做到服务器端系统升级对老客户端透明[7]。对于同一种资源,也可以提供不同的数据表达,可以是JSON,也可以是XML,这样能为不同的客户端提供更好的兼容性(比如有些老语言或者平台不能很好地解析JSON)。如果在设计和修改资源字段的过程中,能做到比较好的向前和向后兼容性,很多年前发布的客户端,也就还能继续访问服务器端(这在某些场景下非常重要,因为很多用户会由于各种原因,一直不升级客户端)。