Skip to content

Web Client

Tomas Langer edited this page Oct 3, 2018 · 3 revisions

The client should be a reactive HTTP client easy to use with our Web Server. There is an HTTP client coming with 11 that supports HTTP2. We should think about how to integrate this (maybe client would only work on jdk11+?). API: https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/package-summary.html

Features

This is a list (unsorted) of features that may be supported by the client.

  1. HTML form support
    1. Nice way to submit forms as-if from browser
  2. Upload/download support
  3. Proxy support
    1. Configurable on client and overridable per request
  4. Tracing support
    1. Trace client calls (configurable)
    2. Propagate tracing information (headers)
  5. Metrics support
    1. Meter client calls (configurable)
  6. Testing support (mocking)
  7. Keep alives
    1. Configurable
  8. Security - should use Helidon Security features for Outbound Security
    1. Specific security configurable per request
    2. Work with existing providers (basic, digest auth, signatures, jwt, combinations)
  9. HTTP 2
  10. Open API support (e.g. generate client from blueprint)
  11. Service Registry support
  12. Support for various media types & mapping to java
    1. JSON-B, JSON-P, URL encoded forms etc.
    2. Correctly set content type on request
    3. Correctly apply based on response content type
    4. Unify as much as possible with server side
    5. Eventually multipart messages
  13. Shortcut methods to common headers (same as server)
    1. Request
    2. Response
  14. Methods for handling similar to web server
    1. Request
    2. Response
  15. Jigsaw modules