/ / Generowanie adresu URL dla akcji kontrolera na wiosnę - java, spring, spring-mvc, spring-boot

Generowanie adresu URL dla akcji kontrolera na wiosnę - java, spring, spring-mvc, spring-boot

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 № 1

Myś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.

REST danych wiosennych

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