Design Patterns and Extensibility of REST API for Networking Applications
REST architectural style has become a prevalent choice for distributed resources, such as the northbound API of software defined networking (SDN) As services often undergo frequent changes and updates, the corresponding REST APIs need to change and update accordingly. To allow REST APIs to change and evolve without breaking its clients, a REST API can be designed to facilitate hypertext driven navigation and its related mechanisms to deal with structure changes in the API. This paper addresses the issues in hypertext driven navigation in REST APIs from three aspects. First, we present REST Chart, a Petri Net based REST service description framework and language to design extensible REST APIs, and it is applied to cope with the rapid evolution of SDN northbound APIs. Second, we describe some important design patterns, such as backtracking and generator, within the REST Chart framework to navigate through large scale APIs in the RESTful architecture. Third, we present a client side differential cache mechanism to reduce the overhead of hypertext driven navigation, addressing a major issue that affects the application of REST API. The proposed approach is applied to applications in SDN, which is integrated with a generalized SDN controller, SOX. The benefits of the proposed approach are verified in different conditions. Experimental results on SDN applications show that on average, the proposed cache mechanism reduces the overhead of using the hypertext driven REST API by 66% while fully maintaining the desired flexibility and extensibility of the REST API.
IEEE Transactions on Network and Service Management