/ / Wie lege ich Etag für eine URL im Spiel fest? - http-Header, playframework-2.0, http-etag

Wie setze ich Etag für einen URL im Spiel-Framework? - http-Header, playframework-2.0, http-Etag

Ich habe bereits versucht, Etag in playframework zu setzen. Alles was ich habe ist
1) https://www.playframework.com/documentation/2.0/Assets
2) https://www.playframework.com/documentation/2.0/JavaResponse

Die erste Option funktioniert nur für Asset oder Dateien. Die zweite Option funktioniert nicht. Ich habe nur die drei im Beispiel hinzugefügt.

Antworten:

4 für die Antwort № 1

Die tatsächliche Verwendung von Etag ist in Play 's beschrieben doc für Vermögenswerte (dass du als erstes verlinkt hast) und auch in Wikipedia Typische Verwendung Sektion.

Am Anfang der Aktion müssen SieStellen Sie fest, ob die angeforderte Ressource seit der vorherigen Generierung des Etag geändert wurde. Wenn ja, müssen Sie neuen Inhalt mit dem neuen Etag generieren, andernfalls geben Sie nur den 304 NotModified Antwort.

Natürlich hängt alles von der Art der angeforderten Ressource ab, trotzdem kann ein recht sauberes Beispiel eine Datenbankentität sein, mit einer ID und einem Feld mit Datum und Uhrzeit der letzten Änderung:

public static Result eTaggedFoo(Long id) {

Foo foo = Foo.find.byId(id);
if (foo == null) return notFound("Given Foo was not found");

String eTag = DigestUtils.md5Hex(foo.id + foo.lastModification.toString());

String ifNoneMatch = request().getHeader("If-None-Match");
if (ifNoneMatch != null && ifNoneMatch.equals(eTag)) return status(304);

response().setHeader(ETAG, eTag);
return ok("Here you can see the " + foo.name + ", last modified: " + foo.lastModification.toString());

}