Jak mogę dynamicznie utworzyć adres URL dla akcji kontrolera?
Rozważmy następujący przypadek:
@Controller
@RequestMapping("controller")
public class Controller {
@RequestMapping("url")
public String method() {
return "Whatever"
}
}
To, co chciałbym zrobić, to uzyskać podstawowy adres URL i konkat kontroler / adres URL do niego. Dla tego zachowania Laravel dostarcza na przykład pomocnika URL (metoda action ()). Czy jest coś podobnego w Spring Boot?
Odpowiedzi:
1 dla odpowiedzi № 1Myślę, że użycie @PathVariable pomoże ci
@Controller
@RequestMapping(value="/controller")
public class Controller {
@RequestMapping(value="/url/{id}", method=RequestMethod.GET)
public String method(@PathVariable("id") String id) {
System.out.println("the url value : "+id );
return "Whatever"
}
}
wtedy możesz wywołać metodę za pomocą / controller / url / {tutaj wartość} przykład /controller/url/www.google.com
1 dla odpowiedzi nr 2
możesz użyć UriComponentBuilder
aby uzyskać bieżący adres URL i powiązać z nim dodatkową część
@Controller
@RequestMapping("controller")
public class Controller {
@RequestMapping("url")
public String method(UriComponentBuilder ucb) {
URI uri = ucb.path("/url").build().toUri();
return "Whatever"
}
}
0 dla odpowiedzi № 3
jeśli chcesz zmapować tylko kontroler, używając pliku właściwości
application.properties
server.context-path=/rest
Jeśli kontrolery obsługują dane z repozytorium, wówczas REST Spring Data może wyjąć znaczną część płyty głównej i rozwiązać początkowy problem.
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
Możesz kontrolować podstawowy adres URL za pomocą pliku właściwości.
application.properties
spring.data.rest.basePath=/rest
To chcesz / rest concat controller / url