You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tubemq.apache.org by "Jeff Zhou (Jira)" <ji...@apache.org> on 2020/08/06 03:15:00 UTC

[jira] [Created] (TUBEMQ-307) Introduce POST request support to WebAPI service

Jeff Zhou created TUBEMQ-307:
--------------------------------

             Summary: Introduce POST request support to WebAPI service
                 Key: TUBEMQ-307
                 URL: https://issues.apache.org/jira/browse/TUBEMQ-307
             Project: Apache TubeMQ
          Issue Type: Improvement
          Components: Server
            Reporter: Jeff Zhou
            Assignee: Jeff Zhou


As for WebAPI service part, currently it supports only GET request, and supporting POST request could apparently and significantly improve the usability and extend the functionality of WebAPI itself.

It could be described as below, some may be so familiar to developers, users, or relating stakeholders:
1. GET has hard limitation of the length of URL (2KB), however, POST using body to carry data section, so it does NOT have such limitation, e.g. you may request an API with even 16MB something if it's really needed;
2. GET requires data to be ASCII characters (or you have to encoded by BASE64 or something like it), however, POST body does NOT such restriction, so you literally could post whatever kind of binary data you want, so it has wider compatibility, and reduces complexity and contributes to performance (no extra encoder needed);
3. GET combines all things in URL, so it could easily captured and cached, while it's visible and less secure to carry sensitive data like identity, however, POST is obviously safer as generally post body won't be cached or captured in analyzer or logger or something else in infrastructure;

Provided the currently using Mortbay Jetty (Jetty 6, which has stopped maintenance for 10+ years), for security, performance and extensibility consideration, upgrade current Jetty component to Eclipse Jetty (Jetty 9, which is current mainstream of Jetty, now in hot developing) is also an important requirement in addition to implementation of this functionality.
Possible extra benefit from this upgrade:
1. HTTP 2 Support: maybe one day any of these feature could play an important role of WebAPI interaction: Multiplexing / Server Push / Frame-based Compression / Stream Prioritization
2. Stay in latest distribution, with Feature and Security improvements (see Jetty VERSION: change log).

So this improvement would consists of 3 major parts:
1. Upgrade Jetty 6 (mortbay) to Jetty 9 (eclipse), with NO WebAPI feature change;
2. Adding POST support to WebAPI, but stay in HTTP 1.1 as before;
3. Upgrade protocol to HTTP 2.0 for WebAPI (with backward compatibility to HTTP 1.1).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)