Add support for HTTP QUERY method
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 28
- Forks
- 25
- Avg merge
- 4d 22h
- Merged PRs (30d)
- 20
Description
Is your feature request related to a problem? Please describe.
Many endpoints use GET for catalog functionality, but some require using POST for specific requests that require more content than can be passed as query parameters. The QUERY endpoint allows for query complexity with improved features for data retrieval that are not present with POST.
Describe the solution you'd like
QUERY support has been added to Jakarta EE (https://github.com/jakartaee/servlet/issues/1068) and Apache Tomcat 12 (https://github.com/apache/tomcat/commit/5e01091299e41bc79509b1c8d17486f85df1d872) libraries. This was a very recent addition, which may not be available in the latest release versions as of yet. Bumping these libraries would add support for the new method type and would allow for a bump to the Javalin library (https://github.com/USACE/cwms-data-api/issues/1004). This may require Java 17, which would not be compatible with Solaris-based systems.
Describe alternatives you've considered
Only the latest versions of the libraries specified above have support for this HTTP method. Compatibility issues with the latest libraries may prevent support for this feature from being added to CDA.
Additional context
Introduced in RFC 10008 (https://www.rfc-editor.org/info/rfc10008), the QUERY HTTP method allows for significantly more complex queries without running into URL length restrictions or requiring POST usage. Unlike POST, the QUERY method is idempotent and cacheable, resulting in consistent behavior when a request is received once and when it is received many times.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the dependency declarations for Jakarta EE, Apache Tomcat, and Javalin, then check their current versions and Java compatibility. Verify whether compatible library updates expose the HTTP QUERY method without breaking Solaris support. Done means CDA accepts and handles QUERY requests with the required dependency versions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100