So erhalten Sie eine Anforderungs-URL in Spring Boot RestController

Lesezeit: 2 Minuten

Benutzer-Avatar
NRA

Ich versuche, die Anforderungs-URL in einem RestController abzurufen. Der RestController hat mehrere Methoden, die mit kommentiert sind @RequestMapping für verschiedene URIs und ich frage mich, wie ich die absolute URL aus der bekommen kann @RequestMapping Anmerkungen.

@RestController
@RequestMapping(value = "/my/absolute/url/{urlid}/tests"
public class Test {
   @ResponseBody
   @RequestMapping(value "https://stackoverflow.com/",produces = "application/json")
   public String getURLValue(){
      //get URL value here which should be in this case, for instance if urlid      
       //is 1 in request then  "/my/absolute/url/1/tests"
      String test = getURL ?
      return test;
   }
} 

Benutzer-Avatar
Deepak

Sie können versuchen, ein zusätzliches Argument vom Typ hinzuzufügen HttpServletRequest zum getUrlValue() Methode:

@RequestMapping(value ="https://stackoverflow.com/",produces = "application/json")
public String getURLValue(HttpServletRequest request){
    String test = request.getRequestURI();
    return test;
}

  • Danke für Antwort und Beispiel. Ich kenne diese Methode, habe mich aber gefragt, ob es eine Möglichkeit gibt, URL-Informationen mithilfe von Eigenschaften auf Controller-Ebene abzurufen, aber es scheint, als wäre dies der richtige Weg.

    – NRB

    12. Juni 2016 um 20:29 Uhr

  • Woher wird HttpServletRequest importiert?

    – Andrew Farell

    30. September 2016 um 14:04 Uhr

  • javax.servlet.http.HttpServletRequest

    – Deepak

    30. September 2016 um 14:22 Uhr

  • Dies beinhaltet keine Parameter

    – TheRealChx101

    11. September 2021 um 1:40 Uhr

Wenn Sie keine Abhängigkeit von Springs HATEOAS oder javax.* Namensraum, verwenden ServletUriComponentsBuilder um den URI der aktuellen Anfrage zu erhalten:

import org.springframework.web.util.UriComponentsBuilder;

ServletUriComponentsBuilder.fromCurrentRequest();
ServletUriComponentsBuilder.fromCurrentRequestUri();

Ermöglicht das Abrufen einer beliebigen URL auf Ihrem System, nicht nur einer aktuellen.

import org.springframework.hateoas.mvc.ControllerLinkBuilder
...
ControllerLinkBuilder linkBuilder = ControllerLinkBuilder.linkTo(methodOn(YourController.class).getSomeEntityMethod(parameterId, parameterTwoId))

URI methodUri = linkBuilder.Uri()
String methodUrl = methodUri.getPath()

  • Diese Antwort funktioniert einwandfrei, aber ist es möglich, auf eine HATEAOS-Abhängigkeit zu verzichten? Obwohl alle Methoden, die ich ausprobiert habe, auf die eine oder andere Weise von der Anforderung abhängen, habe ich das in meinem Szenario nicht.

    – SeverityOne

    25. Juni 2020 um 12:55 Uhr

  • Wohin führt das? Wie?

    – TheRealChx101

    11. September 2021 um 1:40 Uhr

Fügen Sie einen Parameter vom Typ hinzu UriComponentsBuilder zu Ihrer Controller-Methode. Spring gibt Ihnen eine Instanz, die mit dem URI für die aktuelle Anfrage vorkonfiguriert ist, und Sie können sie dann anpassen (z. B. durch Verwendung von MvcUriComponentsBuilder.relativeTo um auf einen anderen Controller mit demselben Präfix zu zeigen).

1381450cookie-checkSo erhalten Sie eine Anforderungs-URL in Spring Boot RestController

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy