Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向正在运行的客户端推送API更新信息的最佳实践是什么?_Javascript_Angularjs_Rest - Fatal编程技术网

Javascript 向正在运行的客户端推送API更新信息的最佳实践是什么?

Javascript 向正在运行的客户端推送API更新信息的最佳实践是什么?,javascript,angularjs,rest,Javascript,Angularjs,Rest,假设我有一个Django REST API和一个AngularJS客户端。假设我对API进行了更改,以便可以为客户端实现新功能。 我(几乎)同时将API和客户端更改推送到生产环境中。新的API版本将运行,但可能仍有多个客户端在用户浏览器上运行旧代码 在浏览器上推送和重新加载代码的通常做法是什么?处理这些情况的最佳方法是按版本推出api更改,就像Facebook和谷歌那样 旧客户端将继续调用不推荐使用的api,而新客户端将调用新api 注意:当清理旧版本时,您必须让您的客户知道您正在放弃对旧客户机

假设我有一个Django REST API和一个AngularJS客户端。假设我对API进行了更改,以便可以为客户端实现新功能。
我(几乎)同时将API和客户端更改推送到生产环境中。新的API版本将运行,但可能仍有多个客户端在用户浏览器上运行旧代码


在浏览器上推送和重新加载代码的通常做法是什么?

处理这些情况的最佳方法是按版本推出api更改,就像Facebook和谷歌那样

旧客户端将继续调用不推荐使用的api,而新客户端将调用新api

注意:当清理旧版本时,您必须让您的客户知道您正在放弃对旧客户机的支持

例如:

//Old deprecated api
GET /api/v1/users
GET /api/v1/cars

//New api - if logic did not change just redirect to old api
GET /api/v2/users (unchanged) --> redirect to /api/v1/users
GET /api/v2/cars new implementation

这样,您可以在保持代码组织的同时仍然支持旧客户端。

您需要编写API以实现向后兼容性。或者,如果API的变化方式使使用它的旧客户机崩溃,那么您需要确保新客户机向每个客户推出。如果您的API依赖于新客户机,则必须将其推出。否则,为向后兼容编写防御代码。如果它是通过web应用程序基于浏览器的,那么您不需要“推送/重新加载”代码。这取决于他们刷新浏览器/缓存。主要版本听起来不错。小版本和补丁版本是否应该使用相同的方法?这是一个有趣的问题。我认为这只适用于专业,但从技术上讲,您可以根据需要对api进行任何版本的修改,如
v2
v2.*