今天用jersey写接口,发现有一个post方法中没有得到参数,查了半天发现自己一不小心将@formparam写成了@queryparam,真是一个悲伤的故事。在这里把几个参数类型整理了一下放出来。

1. 
@PathParam 
使用@PathParam可以获取URI中指定规则的参数,举个例子: 
类中@Path("/user") 
@GET 
@Path("{username"}) 
@Produces(MediaType.APPLICATION_JSON) 
public User getUser(@PathParam("username") String userName) { 
    ... 

当浏览器请求http://localhost/user/jack时,userName值为jack。 
注意,这里的username并不是说Key是username, value是jack而是说/usr/后面跟着的东西就是username,这里username只是个变量

2. 
@QueryParam 
@QueryParam用于获取GET请求中的查询参数,如: 
@GET 
@Path("/user") 
@Produces("text/plain") 
public User getUser(@QueryParam("name") String name, 
                    @QueryParam("age") int age) { 
    ... 

当浏览器请求http://host:port/user?name=rose&age=25时,name值为rose,age值为25。如果需要为参数设置默认值,可以使用

3. 
@DefaultValue,如: 
@GET 
@Path("/user") 
@Produces("text/plain") 
public User getUser(@QueryParam("name") String name, 
                    @DefaultValue("26") @QueryParam("age") int age) { 
    ... 

当浏览器请求http://host:port/user?name=rose时,name值为rose,age值为26。

4. 
@FormParam 
@FormParam,顾名思义,从POST请求的表单参数中获取数据。如: 
@POST 
@Consumes("application/x-www-form-urlencoded") 
publicvoid post(@FormParam("name") String name) { 
    // Store the message 

相信使用过html进行post提交的人对表单一定不陌生,可以想象成这就是在模拟html中表单的请求。 
5. 
使用Map 
在一个大型的server中,因为参数的多变,参数结构的调整都会因为以上几种方式而遇到问题,这时可以考虑使用@Context 注释,并获取UriInfo实例,如下: 
@GET 
public String get(@Context UriInfo ui) { 
    MultivaluedMap<String, String> queryParams = ui.getQueryParameters(); 
    MultivaluedMap<String, String> pathParams = ui.getPathParameters(); 

我觉得,可以认为map是上面几种情况的超集,因为它能够替代以上任意一种。map就是context 
同样还可以通过@Context 注释获取ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse和HttpHeaders等,如下:

@Path("/") 
publicclass Resource {

@Context 
    HttpServletRequest req;

@Context 
    ServletConfig servletConfig;

@Context 
    ServletContext servletContext;

@GET 
    public String get(@Context HttpHeaders hh) { 
        MultivaluedMap<String, String> headerParams = hh.getRequestHeaders(); 
        Map<String, Cookie> pathParams = hh.getCookies(); 
    } 
}

Jersey 写restful接口时QueryParam ,FormParam 等的区别的更多相关文章

  1. web api写api接口时返回

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  2. Spring Boot提供RESTful接口时的错误处理实践

    使用Spring Boot开发微服务的过程中,我们会使用别人提供的接口,也会设计接口给别人使用,这时候微服务应用之间的协作就需要有一定的规范. 基于rpc协议,我们一般有两种思路:(1)提供服务的应用 ...

  3. 在访问RESTful接口时出现:Could not write content: No serializer found for class的问题解决小技巧收集

    注意:市面上对于写RESTful是用RestFul,其实是不规范的,标准写法RESTful. 在Java上,处理这个应该是没有继承Serializable类,然后通过Eclipse生成serialVe ...

  4. jersey实现RESTful接口PUT方法JSON数据传递

    项目中使用的是org.json包 maven中的配置如下: xml <!-- https://mvnrepository.com/artifact/org.json/json --> &l ...

  5. 昨天写支付接口时遇到支付接口返回数据接收地址,session数据丢失(或者说失效)的问题

    在网上找了好久 才找到答案 分享给大家 http://www.zcool.com.cn/article/ZMzYwNTI=.html

  6. 用jersey写简单Restful接口

    1.在myeclipse中新建一个Dynamic Web Project 2.下载jar包,地址在这里 3.restful service代码 package com.qy; import javax ...

  7. Python用Django写restful api接口

    用Python如何写一个接口呢,首先得要有数据,可以用我们在网站上爬的数据,在上一篇文章中写了如何用Python爬虫,有兴趣的可以看看: https://www.cnblogs.com/sixrain ...

  8. vue项目构建实战基础知识:SPA理解/RESTful接口介绍/static目录配置/axios封装/打包时map文件去除

    一.SPA 不是指水疗.是 single page web application 的缩写.中文翻译为 单页应用程序 或 单页Web应用,更多解释请自行搜索. 所有的前端人员都应该明白我们的页面的 u ...

  9. 网络协议 21 - RPC 协议(中)- 基于 JSON 的 RESTful 接口协议

        上一节我们了解了基于 XML 的 SOAP 协议,SOAP 的 S 是啥意思来着?是 Simple,但是好像一点儿都不简单啊! 传输协议问题     对于 SOAP 来讲,比如我创建一个订单, ...

随机推荐

  1. HRNET网络结构简单分析

    hrnet相关的两篇文章 CVPR2019   Deep High-Resolution Representation Learning for Human Pose Estimation High- ...

  2. Vue中可用的判断对象是否为空的方法

    vue有两个方法可用 1. JSON.stringify(evtValue)=='{}' 2. Object.keys(xxx).length==0 js判断对象是否为空对象的几种方法 1.将json ...

  3. Handler常见两种用法

    1.Handler在Android的两个功能 1.1表示未来某时做某事 1.2线程间通信 2.演示源码如下: package com.example.datastrorage; import andr ...

  4. Oracle查询序列和函数方法封装

    工具方法: @Autowired private JdbcTemplate businessTpmeJdbcTemplate; @SuppressWarnings("deprecation& ...

  5. Android之FrameWork

    1 Activity的生命周期和启动模式 1.1 Activity的生命周期全面分析 用户正常使用情况下的生命周期 & 由于Activity被系统回收或者设备配置改变导致Activity被销毁 ...

  6. XGBoost原理详解

    原文:https://blog.csdn.net/qq_22238533/article/details/79477547

  7. Ocelot 配置参数

    Downstream是下游服务配置 UpStream是上游服务配置 Aggregates 服务聚合配置 ServiceName, LoadBalancer, UseServiceDiscovery 配 ...

  8. switch/catch

    public class SwitchTest { public static void main(String[] args) { String param = null; switch (para ...

  9. 什么是UEFI

    UEFI是什么?也许我们大多数用户对这个概念很模糊.uefi可以做什么,有什么具体的应用?虽然不知道具体是做什么的,但是我们经常会在BIOS设置中发现UEFI的踪迹.因为现在越来越多的电脑已经使用了U ...

  10. BFS算法模板(python实现)

    BFS算法整理(python实现) 广度优先算法(Breadth-First-Search),简称BFS,是一种图形搜索演算算法. 1. 算法的应用场景 2. 算法的模板 2.1 针对树的BFS模板 ...