ithewei / ithewei/libhv

路由的占位符解析和查询参数的解析覆盖问题

Offen
#573 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
C
Sterne
7.6k
Forks
1.4k
Ø Merge
1 T. 21 Std.
Gemergte PRs (30 T.)
9

Beschreibung

router.cpp示例中:
https://github.com/ithewei/libhv/blob/0325f2d07f10986139174ff2db75dd151c09b605/examples/httpd/router.cpp#L131-L134

这里路由占位符的解析是在Handler::restful中调用了HttpContext的param,即HttpRequest的GetParam:
https://github.com/ithewei/libhv/blob/0325f2d07f10986139174ff2db75dd151c09b605/examples/httpd/handler.cpp#L171-L179

这个方法是查询参数的解析,这样合在一起会导致这里占位符的解析覆盖了查询参数的解析,如对于/api/test/{str},会导致 GET http://ip:port/api/test/xxx?str=yyy 后,服务器获取查询参数param("str")时,xxx会覆盖yyy

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der Routenregistrierung in examples/httpd/router.cpp ungefähr in den Zeilen 131–134 und verfolge dann Handler::restful und HttpRequest::GetParam in examples/httpd/handler.cpp ungefähr in den Zeilen 171–179. Reproduziere das Problem mit /api/test/xxx?str=yyy und untersuche, wie der Platzhalter im Pfad und der Query-Parameter aufgelöst werden. Als erledigt gilt die Aufgabe, wenn der Platzhalter den Query-Parameter namens str nicht mehr überschreibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
api, backend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.