Greetings !!

Je suis en train d'essayer de mettre en place un serveur Web Rust.
Je suis content ça à l'air de fonctionner en local, cependant, du fait que je ne connaisse pas le moyen de composer une UI style java swing comme à l'époque où on pouvait encore faire des applets, je suis "obligé" de me coltiner css et html.

Or, autant la page html s'affiche autant le css... il n'y a jamais rien qui s'affiche. J'ai un 'not found' concernant l'image de fond choisie.
J'ai du mal à trouver dans la doc comment cela fonctionne au niveau du "root directory du serveur" pour Rust, j'ai beau taper l'image à la racine du projet, dans target, au même niveau que le css -- en changeant le path évidemment --, peu importe où je la met, elle n'est pas trouvée.

Du coup, je me demande si, par hasard il n'y aurait pas quelque chose à côté de laquelle je serais passé...

La "structure" est la suivante, je fais comme cela quand je "m'amuse" avec Apache:

/www (root directory du serveur apache)

...ici j'ai fais un raccourcis mais normalement je mets ces dossiers dans un dossier qui est nommé selon le nom de domaine

/www/css <- où je range les "scripts" .css
/www/png <- où je range mes images
/www/html <- où je range mes fichiers .html
etc...

Dans mon code:

Rust
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
pub fn get_index () -> HttpResponse
{
	let mut htmldata = feedme("./www/html/index.html");
	let cssdata = feedme ("./www/css/index.css");
 
	htmldata = htmldata.replace("{{BASE_CSS}}",&cssdata);
 
	HttpResponse::Ok().content_type("text/html").body(htmldata)
}
pub fn feedme(file_path: &str) -> String
{
	let datas = fs::read_to_string(file_path);
	if datas.is_err()
	{
		error!("{}",datas.as_ref().unwrap_err());
		String::from(datas.unwrap_err().to_string())
	}
	else
	{
		datas.unwrap()
	}
}
Tout à l'air de fonctionner sauf que le css n'est pas pris en compte et j'ai un 404 concernant l'image.

css
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
body
{
	background-image: url("../png/mtga000.png");
	background-attachment: fixed;
	background-repeat: no-repeat;
	background-position: center;
}
Alors je sais pas j'ai essayé en chemin absolu, je pense avoir fait toutes les combinaisons en incluant le déplacement du répertoire png à plusieurs endroits (y compris le répertoire target/debug de Rust) mais rien n'y fait.

Serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
let serveur = HttpServer::new
      (
        ||
          {
              App::new().route("/",web::get().to(get_index)).route("/post",web::post().to(actions))
          }
      );
    println!("Serving on http://192.168.0.4:4040...");
    info!("Server is on !!");
J'ai même remplacé le '/' par '/www' sans aucune conviction (en changeant les chemins dans get_index()), et de nouveau rien...
Le replace() fonctionne, vu que j'ai le 404 concernant l'image non trouvée...

Je serais amateur de pistes pour comprendre ce qui ne fonctionne pas dans cette approche.
Je déteste le Web, donc, je suis pas très motivé mais ici, faute de solutions je n'ai pas le choix, je dois me taper cette merde de html et css à défaut de quelque chose d'équivalent aux Applets de java où via Swing je pouvais composer mon UI et via Java gérer les interactions avec les contrôles. C'est ce que je cherche à faire ici: me détacher de html/javascript et autres merdes mais malgré tout utiliser un navigateur Web pour interagir avec mon application. Depuis 2017 et la décision de ne plus permettre aux Applets de fonctionner j'ai perdu mon confort.

Donc si vous aviez des pistes pour faire du Rust/GTK (via Glade) avec un truc qui ressemble à des Applets en Rust je suis preneur ^^