[英]Spring Boot - How to get all request params in a map in Spring RestController?
[英]How to get request URL in Spring Boot RestController
我正在嘗試在 RestController 中獲取請求 URL。 對於不同的 URI,RestController 有多個用@RequestMapping
注釋的方法,我想知道如何從@RequestMapping
注釋中獲取絕對 URL。
@RestController
@RequestMapping(value = "/my/absolute/url/{urlid}/tests"
public class Test {
@ResponseBody
@RequestMapping(value "/",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;
}
}
您可以嘗試向getUrlValue()
方法添加類型為HttpServletRequest
的附加參數:
@RequestMapping(value ="/",produces = "application/json")
public String getURLValue(HttpServletRequest request){
String test = request.getRequestURI();
return test;
}
如果您不想依賴 Spring 的 HATEOAS 或javax.*
命名空間,請使用ServletUriComponentsBuilder
獲取當前請求的 URI:
import org.springframework.web.util.UriComponentsBuilder;
ServletUriComponentsBuilder.fromCurrentRequest();
ServletUriComponentsBuilder.fromCurrentRequestUri();
允許獲取系統上的任何 URL,而不僅僅是當前的 URL。
import org.springframework.hateoas.mvc.ControllerLinkBuilder
...
ControllerLinkBuilder linkBuilder = ControllerLinkBuilder.linkTo(methodOn(YourController.class).getSomeEntityMethod(parameterId, parameterTwoId))
URI methodUri = linkBuilder.Uri()
String methodUrl = methodUri.getPath()
將類型為UriComponentsBuilder
的參數添加到您的控制器方法中。 Spring 將為您提供一個使用當前請求的 URI 預配置的實例,然后您可以對其進行自定義(例如通過使用MvcUriComponentsBuilder.relativeTo
指向使用相同前綴的不同控制器)。
@SpringBootApplication
@RestController
public class DataStore {
public static void main(String[] args) {
SpringApplication.run(DataStore.class, args);
}
@RequestMapping(path = "api/v1/student/{studentId}")
public int getURLValue(@PathVariable("studentId") int studentId){
System.out.println("studentId is " + studentId);
return studentId;
}
}
如果您已經在path
設置了 URL,那么您已經知道您的 url 的“前綴”。 您只需要知道可以使用@PathVariable
獲取的 url 中的參數
@RestController
@RequestMapping(value = "/my/absolute/url/{urlid}/tests")
public class AndroidAppController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getURLValue(@PathVariable("urlid") String urlid) {
String getURL = urlid;
return getURL;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.