2017-10-18 5 views
0

Ich benutze einen ResourceHandler, um Javascript-Dateien bereitzustellen, wenn ich auf meinem Webserver gehe. Die Sache ist jetzt, dass ich das genau gleiche Javascript zur Verfügung stellen möchte, aber/{ID} in meiner URL annehme, also kann ich die {Identifikation} benutzen, wenn meine Web site POST Anforderung innerhalb der handleRequest Methode tut. Ich habe versucht mit einem pathTemplate, aber wenn ich versuche, auf meine Website zuzugreifen, heißt es, dass es keine meiner js-Dateien finden kann (es funktioniert, wenn ich nicht das pathTemplate verwende).undertow Pfad Vorlage und Ressourcenhandler

Was kann ich tun, damit es funktioniert?

+0

Das würde helfen, wenn Sie etwas Code freigeben würden! – aramaki

+0

Ja gut, es gibt nichts wirklich zu zeigen, außer 2 Zeilen Code hier ^^ ' – baskwo

Antwort

2

Sie können zwei Routen definieren, eine für Ihren Controller (um die Postdaten zu erhalten) und eine für die Bereitstellung Ihrer exakten JavaScript-Datei.

Eine Standardlösung ist eine Route, die für alle Assets (einschließlich Ihrer Javascript App) gedacht ist. Dazu sehen Sie die folgende Antwort: Routing template format for undertow

Undertow.builder().addHttpListener(8080, "0.0.0.0") 
    .setHandler(Handlers.path() 

    // Controllers 
    .addPrefixPath("/controller", Handlers.routing() 
     .post("/{id}", exchange -> { 
      String id = exchange.getQueryParameters().get("id").getFirst(); 
     })) 

    // Serve your file, preserving any route information 
    .addPrefixPath("/app.js", exchange -> { 
     Path p = Paths.get("/path/to/app.js"); 
     exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/javascript"); 
     exchange.getResponseSender().send(
      ByteBuffer.wrap(Files.readAllBytes(p)) 
    )}) 
).build().start(); 

Mit diesem Beispiel dem Controller wird auf der Route /Controller/{id} und Ihre JavaScript-Datei wird serviert direkt zur Verfügung stehen.

Beachten Sie, dass diese Art der Dateibereitstellung nicht optimal ist, wenn die Dateien nicht zu groß sind. Um Dateien besser zu bedienen, kann man mit den PathResource- und PathResourceManager-Klassen von Undertow spielen.

+0

Ich habe missaid, was ich will Ich hätte einen Pfad mywebsite.com/{id] das ist der "Eintrag". Meine Kunden geben ihre eigene ID ein, die ich ihnen zur Verfügung stellen werde, und fange sie dann in meinem Javascript ein, um sie in meine Postanfrage einzufügen. Mit Controller/{id} wird es funktionieren. Ich brauche nur den ersten Teil und das ist, was ich nicht finde, wie man es macht – baskwo

+0

Von meinem Beispiel, wenn Sie eine HTTP-Anfrage zu "/ static/1234" machen, wird es in der URL bleiben, so dass Sie es mit Ihrem Javascript greifen können Logik. Ich weiß immer noch nicht, wie Sie den Download Ihrer Javascript-Datei (von einigen einfachen Index.html?) – aramaki

+0

Ich habe gerade versucht und es scheint zu versuchen, auf "/ static/1234" Unterordner zuzugreifen. Ja, ich habe eine HTML-Datei und ich benutze Aurelia. So initiiere ich den Download meiner Javascript-Datei per Script-Tag in meiner index.html. Für jetzt anstelle von/1234 mache ich # 1234 und es funktioniert, aber ich würde lieber tun/1234 als # 1234. – baskwo

Verwandte Themen