akka/akka-http

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

オープン

#395 opened on 2016/10/15

 (0 件のコメント) (0 件のリアクション) (0 人の担当者)Scala (598 件のフォーク)batch import
1 - triagedhelp wanted

Repository metrics

Stars
 (1,311 個のスター)
PR merge metrics
 (平均マージ 1d 10h) (30d で 2 merged PRs)

説明

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

コントリビューターガイド