akka/akka-http

akka.http.scaladsl.model.Uri apply() methods should not take charset and mode as arguments?

Ouverte

#395 ouverte le 15 oct. 2016

 (0 commentaire) (0 réaction) (0 personne assignée)Scala (598 forks)batch import
1 - triagedhelp wanted

Métriques du dépôt

Stars
 (1 311 étoiles)
Métriques de merge PR
 (Merge moyen 1j 10h) (2 PRs mergées en 30 j)

Description

This was discussed in Akka User Group, and the review discussion which was in akka/akka#18715.

sirthias on Oct 13, 2015 IMHO neither the charset nor the mode is a property of the URI.

Now that the Uri.query() method takes charset and mode as arguments after the above PR 18175 was merged.

Then, I think we should deprecate Uri's apply() methods which take charset and mode arguments? Otherwise there could be confusing use like below.

val uri = Uri("http://localhost?a^=b", mode=Uri.ParsingMode.Relaxed)

println(uri.query(mode=Uri.ParsingMode.Relaxed).get("a^"))
//prints Some(b)

println(uri.query(mode=Uri.ParsingMode.Strict).get("a^"))
//!!! You pass a different mode after Uri's apply() was called, and get a different result !!!
//IllegalUriException: Illegal query: Invalid input '^', expected '+', '=', query-char, 'EOI', '&' or pct-ncoded (line 1, column 2): a^=b

Guide contributeur