REST API Streaming Progress Updates

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In REST architectures, clients cannot monitor the progress of API operations performed by servers, leading to inefficiencies due to the indeterminate time of completion, as they must wait for an HTTP response without any mechanism to track the operation's progress.

Innovation Solution

The implementation of streaming progress updates and results for REST API operations, where the server sends periodic updates to the client during the execution of the API operation, allowing the client to estimate the completion time and optimize its processes, while the server is free from constraints of expected operation durations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If the client waits for an HTTP response to complete before monitoring progress, then the client can receive the final result, but the client loses time and cannot optimize its processes during the indeterminate waiting period

Engineering Contradiction:
Improvewaiting timeVSAvoidprogress information
Core Design Contradiction:
Loss of timeVSLoss of information

Solution Approach 1:

The server sends periodic progress updates to the client during the execution of long-running API operations. These updates include status information and estimated completion times, allowing the client to monitor progress without continuous polling. The feedback mechanism resolves the contradiction by providing information flow during the waiting period while maintaining the asynchronous nature of REST operations.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The client receives an acknowledgment response immediately upon sending the request, confirming that the server has accepted the operation before the operation completes. This preliminary action allows the client to proceed with other tasks or optimize its processes during the operation's execution, reducing the effective waiting time while maintaining proper request-response semantics.

Inventive Principle:
Principle #10Preliminary action

2Loss of information

If the client polls the server frequently to check operation status, then the client can monitor progress, but the system complexity and energy consumption increase

Engineering Contradiction:
Improveprogress informationVSAvoidmonitoring mechanism complexity
Core Design Contradiction:
Loss of informationVSDevice complexity

Solution Approach 1:

Instead of requiring the client to implement complex polling logic with exponential backoff and retry mechanisms, the server proactively pushes progress updates to the client. This feedback approach eliminates the need for complex client-side monitoring mechanisms while still providing real-time progress information, resolving the contradiction between information availability and system complexity.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The HTTP response stream acts as an intermediary channel between the server and client, carrying progress updates without requiring additional communication protocols or complex message queues. By utilizing the existing HTTP response mechanism for progress reporting, the solution avoids introducing additional system complexity while enabling bidirectional information flow.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Duration of action of moving object

If REST API operations are designed to complete quickly, then the architecture remains simple, but long-running operations cannot be supported efficiently

Engineering Contradiction:
Improveoperation durationVSAvoidclient efficiency
Core Design Contradiction:
Duration of action of moving objectVSProductivity

Solution Approach 1:

The system dynamically adapts to operations of any duration by implementing a unified progress update mechanism that works for both quick and long-running operations. The server determines the appropriate update frequency based on operation characteristics, allowing quick operations to complete without overhead while long-running operations provide meaningful progress information. This dynamic approach eliminates the need for separate handling of different operation types, improving overall productivity.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The progress update mechanism changes its behavior based on operation parameters such as estimated duration and complexity. For long-running operations, the server sends periodic updates with status and timing information, while for quick operations, the standard request-response pattern is maintained. This parameter-based adaptation allows the system to efficiently support operations across the full duration spectrum without compromising simplicity or productivity.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS11303691B2Streaming progress updates and results of rest API operations
Publication Date: 2022.04.12 VMWARE INC
  • US11303691B2 patent drawing
  • US11303691B2 patent drawing
  • US11303691B2 patent drawing

AI summary

One or more examples provide a method of performing a REST API operation at a server computing system includes receiving a request of a hypertext transfer protocol (HTTP) session from a client computing system. The request includes data for requesting performance of the REST API operation and issuance of progress updates. The method further includes sending a first part of a response of the HTTP session to the client computing system. The first part of the response acknowledges the request. The method further includes sending, while the REST API operation is performed, at least one additional part of the response to the client computing system, each additional part of the response having a progress update for the REST API operation. The method further includes sending, upon completion of the REST API operation, a final part of the response to the client computing system having a result of the REST API operation.