今天用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. Java ExecutorService四种线程池及自定义ThreadPoolExecutor机制

    一.Java 线程池 Java通过Executors提供四种线程池,分别为:1.newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收 ...

  2. OpenResty之 lua_shared_dict 指令

    1. lua_shared_dict 指令介绍 原文: lua_shared_dict syntax:lua_shared_dict <name> <size> default ...

  3. Heat map 绘图神奇

    https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149(博主视频教学主 ...

  4. Socket概述

    Socket套接字概述: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字. 通信的两端都有Socket. 网络通信其实就是Socket间的通信. 数据在两个Socket ...

  5. php+mysql模糊查询功能

    一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,% :表示任意0个或多个字符.可匹配任意类型和长度的字符,有 ...

  6. 思科常见的防病毒ACL

    SW(config-ext-nacl)# 10 deny tcp any any eq 27665 SW(config-ext-nacl)# 20 deny tcp any any eq 16660 ...

  7. 超详细的EM算法理解

    众所周知,极大似然估计是一种应用很广泛的参数估计方法.例如我手头有一些东北人的身高的数据,又知道身高的概率模型是高斯分布,那么利用极大化似然函数的方法可以估计出高斯分布的两个参数,均值和方差.这个方法 ...

  8. onethink多图上传

    模板处理, 可以参考 checkbox 的. 注:edit 方法的 基本一样,需要先把已有的数据展示出来,绑定双击事件,删除图片 需要先绑定给已经展示出来的图片, uploadPicture 的cal ...

  9. CBES = component-based entity system

    比较好的介绍 CBES 的文章 http://www.richardlord.net/blog/what-is-an-entity-framework

  10. Eureka报错: Connect to localhost:8761 timed out

    最近整理配置Eureka时, 注册服务后, Eureka服务一直报出如下错误: 如下是我的单台eureka的 application.yml 配置: spring: application: name ...