【问题标题】:What's the difference between Servlet Get and WebSerivce Rest Get? [duplicate]Servlet Get 和 WebSerivce Rest Get 有什么区别? [复制]
【发布时间】:2018-06-09 16:50:01
【问题描述】:

当我开发一个 servlet 并覆盖 doGet 方法时。我可以访问在 URL 中传递的参数值,例如 req.getParameter("myParam")。URL 将类似于 http://mysite:8080/APP?myParam=123。 对于 Rest Webservice 的情况(假设实现是 Jersey),如果我像这样进行 Get Service

@Get
    @Path("myfunction")
    @Compress
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response myfunction(@QueryParam("myParam") String myParam)

网址将是这样的http://mysite:8080/APP/myfunction/123

两个 URl 都可以使用 curl 或 postman 调用。但我不明白它们之间有什么区别?

我怎样才能创建一个获取休息服务(使用球衣),以便 URL 将像这样 http://mysite:8080/APP?myParam=123 并且在后端我可以获得这个 myparam?

谢谢

【问题讨论】:

  • 注意,GET 方法并不意味着您需要传递查询参数。没有任何查询参数的简单 url 也可以使用 GET 方法。如前所述,我不确定,您的实际问题是什么。

标签: java rest curl servlets jersey


【解决方案1】:

由于您返回JSON,所以同样的功能可以用作网络服务。对于 servlet,我们通常重定向或加载另一个页面(ftl、jsp 等),但在此函数中,因为它希望您生成 JSON 作为输出,所以是的,您也可以将其用作服务。

我们通常面临的另一个区别是,应用程序中的功能是安全的,我们需要在访问特定的GET 调用之前登录。

在这里您不需要任何身份验证,它是一个普通的GET 调用,输出JSON,因此您也可以将此特定功能用作网络服务。

【讨论】:

  • 我怎样才能做一个获取休息服务(使用球衣),这样 URL 会像这样 mysite:8080/APP?myParam=123 并且在后端我可以得到这个 myparam? (有可能吗?)
  • 有一个详细的教程可以做到这一点,您需要导入 jersy api 和库以使其工作
  • RESTful url 模式不同于使用查询字符串。阅读Representational_state_transfer#Relationship_between_URL_and_HTTP_methods
  • @RavinderReddy 同意,但同样的 url 将返回 json,然后可以对其进行解析和使用。
【解决方案2】:

这很简单,只需使用 @queryparam 然后它们将是相同的。 示例:

import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;

    @Path("/users")
    public class UserService {

        @GET
        @Path("/query")
        public Response getUsers(
            @QueryParam("from") int from,
            @QueryParam("to") int to,
            @QueryParam("orderBy") List<String> orderBy) {

            return Response
               .status(200)
               .entity("getUsers is called, from : " + from + ", to : " + to
                + ", orderBy" + orderBy.toString()).build();

        }

    }

the URL pattern will be like 

    URI Pattern : “users/query?from=100&to=200&orderBy=age&orderBy=name”

【讨论】:

  • 大声笑,如果您已经知道,那您为什么要发布问题?即使您发布了问题,那么您也应该发布自己的答案,而不是某个链接,该链接已经存在于某处。如果明天这个链接坏了怎么办?
猜你喜欢
  • 2011-03-29
  • 1970-01-01
  • 2011-05-07
  • 2010-09-10
  • 1970-01-01
  • 2021-05-10
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多