Spring Rest中@Context UriInfo的等价物是什么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Rest中@Context UriInfo的等价物是什么相关的知识,希望对你有一定的参考价值。

我之前在Jersey和RESTEasy框架中工作,现在我们将使用Spring Rest进行新项目,我不想将所有查询参数和矩阵参数作为参数传递给方法,通常我会用方法注释方法@Context UriInfo并将在Jersey或RESTEasy Framework中获取我方法中的所有参数以获取复杂参数。

我想知道Spring REST中是否有任何@Context UriInfo,类似于RESTEasy或Jersey Framework。我想在方法中获取所有查询参数或矩阵参数和其他参数,而不是将它们作为方法中的参数传递。

答案

我没有发现任何类似于UriInfo的spring类。但我们可以从httpservlet请求中获取相同的信息。假设,网址是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方法更有限的可用方法。

另一答案

我也没有找到任何相当于UriInfo的spring类。我使用下面的代码:

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();
}

以上是关于Spring Rest中@Context UriInfo的等价物是什么的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot 数据rest findby traverson to java object

调用 REST API 并将其响应存储在 Context API 中

Spring 安全上下文 XML

Spring Boot的启动与调用

spring-data-redis 中的HashOperations为啥有三个参数

Spring 远程调用工具类RestTemplateUtils