Spring 中的 @Context UriInfo 等同于什么?
What is the equivalent of @Context UriInfo in Spring Rest
我之前使用过 Jersey 和 RESTEasy 框架,现在我们将使用 Spring Rest 进行新项目,我不想将所有查询参数和矩阵参数作为方法中的参数传递,通常我会用 @Context UriInfo
注释该方法,并在 Jersey 或 RESTEasy Framework 中获取我的方法中的所有参数以获得复杂参数。
想知道Spring REST中有没有@Context UriInfo
类似RESTEasy或者Jersey Framework的。我想获取所有查询参数或矩阵参数以及方法内部的其他参数,而不是将它们作为方法中的参数传递。
我没有发现任何 spring class 等同于 UriInfo。
但是我们可以从 httpservlet 请求中获取相同的信息。假设,一个url是http:localhost:8080/services/test?one=1&two=2,那么,
hsr.getServletContext.getContextPath() gives "/services"
hsr.getRequestURI() gives "/services/test"
hsr.getRequestURL() gives complete url "http:localhost:8080/services/test"
hsr.getQueryString() gives "one=1&two=2"
hsr.getServletPath() gives "/test"
hsr.getParameterMap() gives all query strings in a Map as key value pair
您可以在 URIinfo 对象中设置和使用这些值
如果您使用的是 Spring MVC,您还可以通过以下方式访问它:
@Autowired
ServletContext servletContext;
但是,与 Kaliappan 的方法相比,它会为您提供一组更有限的可用方法。
我也没有发现任何 spring class 等同于 UriInfo。我正在使用以下代码:
private getRequstUrl(HttpServletRequest request) {
String requestUrl = request.getScheme() + "://" + request.getServerName()
+ ("http".equals(request.getScheme()) && request.getServerPort() == 80 || "https".equals(request.getScheme()) &&
request.getServerPort() == 443 ? "" : ":" + request.getServerPort())
+ request.getRequestURI();
return requestUrl;
}
public String constructLink(ParamModel paramModel, String requestUrl) {
StringBuilder stringBuilder = new StringBuilder("<");
stringBuilder.append(requestUrl);
if (paramModel.getSize() > 0 && paramModel.getStart() > -1) {
stringBuilder.append("?");
stringBuilder.append("start=");
stringBuilder.append(paramModel.getStart() + paramModel.getSize());
stringBuilder.append("&");
stringBuilder.append("size=");
stringBuilder.append(paramModel.getSize());
}
stringBuilder.append(">; rel=\"next\"");
return stringBuilder.toString();
}
我之前使用过 Jersey 和 RESTEasy 框架,现在我们将使用 Spring Rest 进行新项目,我不想将所有查询参数和矩阵参数作为方法中的参数传递,通常我会用 @Context UriInfo
注释该方法,并在 Jersey 或 RESTEasy Framework 中获取我的方法中的所有参数以获得复杂参数。
想知道Spring REST中有没有@Context UriInfo
类似RESTEasy或者Jersey Framework的。我想获取所有查询参数或矩阵参数以及方法内部的其他参数,而不是将它们作为方法中的参数传递。
我没有发现任何 spring class 等同于 UriInfo。 但是我们可以从 httpservlet 请求中获取相同的信息。假设,一个url是http:localhost:8080/services/test?one=1&two=2,那么,
hsr.getServletContext.getContextPath() gives "/services"
hsr.getRequestURI() gives "/services/test"
hsr.getRequestURL() gives complete url "http:localhost:8080/services/test"
hsr.getQueryString() gives "one=1&two=2"
hsr.getServletPath() gives "/test"
hsr.getParameterMap() gives all query strings in a Map as key value pair
您可以在 URIinfo 对象中设置和使用这些值
如果您使用的是 Spring MVC,您还可以通过以下方式访问它:
@Autowired
ServletContext servletContext;
但是,与 Kaliappan 的方法相比,它会为您提供一组更有限的可用方法。
我也没有发现任何 spring class 等同于 UriInfo。我正在使用以下代码:
private getRequstUrl(HttpServletRequest request) {
String requestUrl = request.getScheme() + "://" + request.getServerName()
+ ("http".equals(request.getScheme()) && request.getServerPort() == 80 || "https".equals(request.getScheme()) &&
request.getServerPort() == 443 ? "" : ":" + request.getServerPort())
+ request.getRequestURI();
return requestUrl;
}
public String constructLink(ParamModel paramModel, String requestUrl) {
StringBuilder stringBuilder = new StringBuilder("<");
stringBuilder.append(requestUrl);
if (paramModel.getSize() > 0 && paramModel.getStart() > -1) {
stringBuilder.append("?");
stringBuilder.append("start=");
stringBuilder.append(paramModel.getStart() + paramModel.getSize());
stringBuilder.append("&");
stringBuilder.append("size=");
stringBuilder.append(paramModel.getSize());
}
stringBuilder.append(">; rel=\"next\"");
return stringBuilder.toString();
}