使用IDEA 搭建基于jersey的RESTful api

环境准备:

  • Intellij IDEA
  • tomcat 7

1. 创建项目

创建一个web Application项目

使用IDEA 搭建基于jersey的RESTful api

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

使用IDEA 搭建基于jersey的RESTful api

创建完成后,使用Add Frameworks Support把maven项目的支持引入。

在项目上右键:

 使用IDEA 搭建基于jersey的RESTful api

使用IDEA 搭建基于jersey的RESTful api

到此为止就已经成功创建了一个web项目了。

2. 项目配置

  2.1 Maven配置

  修改pom.xml,引入Jersey相关jar包

<dependency>                       
   <groupId>org.glassfish.jersey.containers</groupId>   <artifactId>jersey-container-servlet</artifactId>    <version>2.25</version> </dependency>

  2.2 web配置

  修改web.xml

<servlet>
  <servlet-name>JAX-RS Servlet</servlet-name>
  <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
  <init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>com.hlzf.hellojersey</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>JAX-RS Servlet</servlet-name>
  <url-pattern>/api/*</url-pattern>
</servlet-mapping>

  其中com.hlzf.hellojersey对应放置restful demo代码的包,/api/对应的是restful api映射的地址,一般我们不把这个地址设为/*,因为这样会覆盖默认的index地址,除非你自己重新定义了首页地址。

  2.3 编写逻辑代码

  在com.hlzf.hellojersey下新建Hello.java文件。

package com.hlzf.hellojersey;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

/**
@Path 对应的是restful api的子路劲,比如前面配置的是/api/*,则访问该API的路径就是https//:ip:port/api/hello
@GET @POST 对应的是请求资源用的HTTP方法
@Produces 表示返回的数据类型,如MediaType.TEXT_PLAIN对应返回文本类型
 */
@Path("hello")
public class Hello {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayHello(){
        return "Hello,I am text!";
    }

    @POST
    @Produces(MediaType.TEXT_XML)
    public String sayXMLHello() {
        return "<?xml version=\"1.0\"?>" + "<hello> Hello,I am xml!" + "</hello>";
    }

    @GET
    @Produces(MediaType.TEXT_HTML)
    public String sayHtmlHello() {
        return "<html> " + "<title>" + "Hello Jersey" + "</title>"
                + "<body><h1>" + "Hello,I am html!" + "</body></h1>" + "</html> ";
    }
}

3. 启动项目

将maven引入的jar包放到lib文件夹下。

点击File->Project Structure

使用IDEA 搭建基于jersey的RESTful api

使用IDEA 搭建基于jersey的RESTful api

在tomcat中引入项目,启动

使用IDEA 搭建基于jersey的RESTful api

使用网页进行get请求:

使用IDEA 搭建基于jersey的RESTful api

4. 发布war包

使用IDEA 搭建基于jersey的RESTful api

使用IDEA 搭建基于jersey的RESTful api

使用IDEA 搭建基于jersey的RESTful api

打包完成后,在out目录找到war包 :

使用IDEA 搭建基于jersey的RESTful api

5. 带参数的api接口设计

  5.1 @PathParam

  使用该注释获取参数时可以获取URI中制定规则的参数

//该类的路径为/user
@GET
@Path("{username"})
@Produces(MediaType.APPLICATION_JSON)
public User getUser(@PathParam("username") String userName) {
 //...
}

  浏览器请求:http://localhost:8080/user/zhangsan

  5.2 @QueryParam

  该参数用于获取Get请求中的查询参数,和上一个的区别是它是通过URL中的?符号来实现的。

@GET
@Path("/user")
@Produces("text/plain")
public User getUser(@QueryParam("name") String name, @QueryParam("age") int age) { 
//...
}

  浏览器请求:http://localhost:8080/user?name=zhangsan&age=12

  5.3 @FormPara

  从Post请求的表单中获取数据

@POST
@Consumes("application/x-www-form-urlencoded")
publicvoid post(@FormParam("name") String name) { 
//
}

  5.4 默认参数值DefaultValue

  在函数获取参数时参数有一个默认值,那么就可以使用该注释,它的使用方法如下:

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

  5.5 使用Map的参数@Context

  在一个大型的server中,由于参数的多变,参数结构的调整很容易遇到问题,这时候就可以考虑使用@Context来进行注释了。例子如下:

@GET
public String get(@Context UriInfo ui) { 
     MultivaluedMap<String, String> queryParams = ui.getQueryParameters(); 
    MultivaluedMap<String, String> pathParams = ui.getPathParameters();
}

6. 参考链接

https://www.cnblogs.com/MarsCheng/p/7245292.html

https://blog.csdn.net/mnicsm/article/details/105010233

https://www.jianshu.com/p/ac01105241bf

 

使用IDEA 搭建基于jersey的RESTful api

上一篇:scp命令从服务器上下载文件到windows


下一篇:C# 1-Z 解码 数字转字母(A-Z)