Quellcode durchsuchen

don't unwrap when fullstack fails to get the path and query information from the request (#2578)

Evan Almloff vor 1 Jahr
Ursprung
Commit
d2b5310317
1 geänderte Dateien mit 8 neuen und 5 gelöschten Zeilen
  1. 8 5
      packages/fullstack/src/axum_adapter.rs

+ 8 - 5
packages/fullstack/src/axum_adapter.rs

@@ -374,11 +374,14 @@ pub async fn render_handler_with_context<F: FnMut(&mut DioxusServerContext)>(
     request: Request<Body>,
 ) -> impl IntoResponse {
     let (parts, _) = request.into_parts();
-    let url = parts.uri.path_and_query().unwrap().to_string();
-    let parts: Arc<tokio::sync::RwLock<http::request::Parts>> =
-        Arc::new(tokio::sync::RwLock::new(parts));
-    let mut server_context = DioxusServerContext::new(parts.clone());
-    inject_context(&mut server_context);
+    let url = parts
+        .uri
+        .path_and_query()
+        .ok_or(StatusCode::BAD_REQUEST)?
+        .to_string();
+    let parts: Arc<parking_lot::RwLock<http::request::Parts>> =
+        Arc::new(parking_lot::RwLock::new(parts));
+    let server_context = DioxusServerContext::from_shared_parts(parts.clone());
 
     match ssr_state
         .render(url, &cfg, move || virtual_dom_factory(), &server_context)