路由的占位符解析和查询参数的解析覆盖问题
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
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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