Ich vor kurzem ging durch erholsamen Web-Service-Tutorial, konnte aber nicht verstehen, was ein Kontext ist. Kann jemand erklären, was es und was auch @Contex t tut?REST-APIs verstehen - Was sind Kontext und @Context?
Antwort
REST ist ein Architekturstil und eine der Möglichkeiten, Web-Services zu implementieren. (Andere ist SOAP). Es gibt viele Implementierungen der REST-Architektur und eine davon in Java ist Jersey (https://jersey.java.net/) @context ist Anmerkung in Jersey-Framework. Es ist eine Klasse von jax rs jar. (https://jersey.java.net/apidocs-javax.jax-rs/2.0.1/javax/ws/rs/core/Context.html)
Für eine Erklärung über Kontext in Programmierung, sehen Sie sich diese answer.
Die JAX-RS API bietet eine @Context
Annotation. Im Allgemeinen kann eine solche Annotation verwendet werden, um kontextbezogene Java-Typen zu erhalten, die sich auf die Anforderung oder die Antwort beziehen. Diese Typen können in Klassen eingefügt werden, die von der JAX-RS-Laufzeit verwaltet werden.
Zum Beispiel die HttpServletRequest
in Ihrem Ressource-Methode zu injizieren, können Sie wie folgt vorgehen:
@GET
public Resonse foo(@Context HttpServletRequest request) {
...
}
Zusätzliche Ressourcen:
Können wir nicht direkt etwas wie HttpServelet req schreiben, anstatt @Context davor zu setzen, und was ist ein Kontext? – user3248186
@ user3248186 Siehe meine aktualisierte Antwort. Die @ @ Context-Annotation wird benötigt, um Typen wie "HttpServletRequest" in Klassen einzufügen, die von JAX-RS verwaltet werden. –
@ user3248186 Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. –
JAX -RS bietet die @Context
Anmerkung zu injizieren 12 Objektinstanzen auf den Kontext der Anfrage HTTP verwandt und sie sind:
- Security - Sicherheitskontext Instanz für die aktuelle HTTP-Anforderung
- anfordern - Für Voraussetzung Anforderungsverarbeitung Einstellung
- Anwendung, Konfiguration und Provider -> Zugriff auf die Anwendung JAX-RS Stellen, Konfigurati auf und Anbieter Instanzen
- ResourceContext - Ressourcen contect aClass Instanzen
- ServletConfig - Die ServletConfig Instanz Instanz
- ServletContext - Die ServletContext Instanz
- HttpServletRequest - Die HttpServletRequest Instanz für die aktuelle Anfrage
- HttpServletResponse - Die HttpServletResponse Instanz für die aktuelle Anforderung
- httpheaders - Behält die HTTP-Header-Schlüssel und Werte
- UriInfo - Abfrageparameter und Pfadvariablen aus dem URI genannt
Es ist ein wenig verwirrend, beides haben eine @Inject
(oder @Autowired
im Frühjahr) und @Context
, die die gleiche Arbeit macht, aber es wird gehofft, mehr Ausrichtung auf Java EE in der nächsten Ausgabe zu bringen. In der Zwischenzeit müssen Sie sich abfinden.
Ein interessantes Feature ist, dass alle diese Instanzen als Feldwert oder direkt in die Ressourcenmethode injiziert werden können.
Ein Beispiel für die Injektion in die Ressource-Methode Parameterliste:
@Path("/")
public class EndpointResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getAllHttpHeaders(final @Context HttpHeaders httpHeaders){
// Code here that uses httpHeaders
}
}
Ein Beispiel für die Injektion in ein Feld:
@Path("/")
public class EndpointResource {
private final @Context HttpHeaders httpHeaders;
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getAllHttpHeaders(){
// Code here that uses httpHeaders
}
}
Wenn Sie mehr wissen wollen, in dieser Serie einen Blick von Artikeln, die die Frage beantworten What is @Conext in JAX-RS used for?
- 1. Binding Context in Assemblies verstehen
- 2. Was sind Hyperfunktionen im Kontext der Informatik?
- 3. DispatcherServlet, Context und SpringSecurity
- 4. Formal Context Free Grammar Von Freier Kontext Sprache
- 5. Object Context, Repositories und Transaktionen
- 6. Was sind komplexe Typen im Kontext mit Entity Framework
- 7. Was sind die beabsichtigten Anwendungsfälle für den Kontext- und RootValue-Parameter der Auflösungsfunktion?
- 8. Tomcat Context und JDBC ... Was mache ich falsch?
- 9. Servlet Context, Collections und Serialization
- 10. Wie kann Hubot den Chat-Kontext verstehen?
- 11. Verstehen was unterscheidet Jenkins und Django-Jenkins
- 12. Leinwand Kontext Koordinaten sind inkonsistent
- 13. init-param und context-param
- 14. Was tun, wenn ich keinen Kontext habe?
- 15. Getting Fragment Context
- 16. Bildverarbeitung: Was sind Okklusionen?
- 17. Was ist der beste Weg, Context innerhalb von AsyncTask zu bekommen?
- 18. Android Glide Context Fehler
- 19. Kontext und Kalender
- 20. Stream-Kontext in PHP - was ist das?
- 21. Entity Framework Object Context
- 22. Was sind Named Pipes?
- 23. BitSet toString() und valueOf() sind schwer zu verstehen
- 24. Kovariante und kontravariante Schnittstellen verstehen in C#
- 25. Verstehen, wann und warum verschiedene Android-Threads zu verwenden sind
- 26. Was macht Kontext-Annotation im Frühling?
- 27. Was ist ein OCCI-Kontext und eine Umgebung?
- 28. Jenkins URL Port Context Ausgabe
- 29. Was ist ein Kontext in Django?
- 30. Entity Framework und Kontext dispose
Können Sie es klären? Sprechen Sie über einen bestimmten Rahmen? –
@ CássioMazzochiMolin yeah, jersey – user3248186
Und was meinst du mit * Kontext *? Welches Tutorial hast du gelesen? –