栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通过查询参数选择球衣方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过查询参数选择球衣方法

我认为Claudio是正确的-您可以使用Jersey,但是您将自己处理查询参数,因为它仅在路径上匹配。

您可以注入UriInfo并从中提取查询参数:

@Path("/operation")public class Operation {    @Context    protected UriInfo info;    @GET    public String operation() {        if (info.getQueryParameters().containsKey("create")) // do stuff        else if (info.getQueryParameters().containsKey("info")) // other stuff    }

}

您可以从Jersey切换到另一个框架。我相信Spring
可以根据查询参数路由到多种方法。

如您所述,也许您可​​以编写一些更标准的内容,然后将请求重新映射到该标准。例如,您可以使用Servlet过滤器或前端服务器(如Apachehttpd或nginx)来修改请求。

从资源的角度考虑这些操作是在做什么?客户帐户,电影,股票交易等。出于争论的缘故,我们将其称为“ Foo”。您可能会使用类似以下的内容:

@Path("/foo")public class FooResource {    @Context    protected UriInfo info;    @GET    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})    public Foo getById(@QueryParam("id") int id) {         // get Foo by id         Foo = ....         // return an instance of Foo and let Jersey convert it to XML         // or JSON depending on the "Accept" header that the client

sent
return foo;
}

    @POST    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})    public Response create(Foo instance)    {         // let Jersey deserialize the request body from JSON or XML.         // save the instance however you want         int id = fooService.save(instance);         // return a 204 "created" with a "Location" header         URI location =

info.getAbsolutePathBuilder().path(“{id}”).build(id);
return Response.created(location).build();
}

}

听起来您的URI结构是由其他人强制执行的,因此这可能不是您的选择。如果您继续使用当前的URI结构,则应注意一个主要陷阱。

根据HTTP
1.1规范,GET请求应该是幂等的。您当前的设计似乎正在使用GET请求创建新的服务器端实例。可能会损坏…中间代理或Web浏览器可能会缓存对GET请求的响应,并阻止创建新实例。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号