程序员在企业级开发中,如何构建RestfulAPI?

360影视 欧美动漫 2025-05-28 15:40 2

摘要:在目前的企业级开发中,从开发效率的角度来考虑,通常会选择使用前后端分离的开发形式。后端提供API接口,前端负责对接口进行调用,实现数据的返回和显示。前后端交互的一个重要工具是API,而Restful API是API的一种指导性设计思想,能让后端人员设计出更加优

在目前的企业级开发中,从开发效率的角度来考虑,通常会选择使用前后端分离的开发形式。后端提供API接口,前端负责对接口进行调用,实现数据的返回和显示。前后端交互的一个重要工具是API,而Restful API是API的一种指导性设计思想,能让后端人员设计出更加优雅的API。本节介绍Restful API的概念和构建方式。

Restful架构风格是由Roy T. Fielding在其2000年的博士学位论文中首先提出的,它基于HTTP、URI、XML和JSON等标准与协议,是一种支持轻量级、跨平台和跨语言的架构设计,也是一种新的Web服务架构风格(或思想)。

HTTP是Restful架构风格的一个典型体现,因为Restful最关键的特点是资源、统一接口、URI和无状态。

根据Restful的定义,它有以下4个特点:

对网络上所有的资源都有一个资源标识符;

对资源的操作不会改变标识符;

同一资源有多种表现形式,如XML和JSON;

所有操作都是无状态的(Stateless)。

在Restful风格中,资源的具体操作类型用HTTP动词表示:

GET(查询):从服务器上取出资源(一项或多项);

POST(创建):在服务器上新建一个资源;

PUT(更新):在服务器上更新全部的资源(客户端提供改变后的完整资源);

PATCH(更新):更新部分资源(客户端提供需要改变的部分资源);DELETE(删除):从服务器上删除资源。

在Restful中,请求URI的格式有一套推荐的规则,例如,请求中无动词,均为名词。下面给出请求URI的示例,如表2.2所示。

在表2.2所示的请求URI的示例中,user通过不同的请求方法向服务器发出不同的请求,继而得到不同的返回值,这很符合Restful的风格。

Jersey Restful框架是一个产品级别的Java开源框架,它是对JAXRS(JSR 311和JSR 339)的参考实现。Jersey Restful提供特有的API,其API继承自JAX-RS。它还提供一些功能以进一步简化Restful项目的开发难度,同时可以和Spring Boot进行集成。

Jersey Restful的开发依赖于注解的使用,其作用类似于Spring MVC的注解。Jersey Restful常用的开发注解如表2.3所示。

表2.3 Jersey Restful常用的开发注解

介绍了Jersey Restful,因为在项目开发中使用的是SpringBoot,所以需要把Jersey Restful整合到Spring Boot中。整合分为以下几个步骤:

(1)沿用本章前面创建的Spring Boot项目添加Jersey Restful的依赖。

在pom.xml中添加如下依赖代码:

org.springframework.boot

spring-boot-starter-jersey

这里添加依赖就体现了Spring Boot的便捷性,只需要添加上述依赖,就会自动将Jersey Restful加载到项目中。单击刚在pom.xml中添加的springboot-starter-jersey进入依赖详情,可以看到当前项目使用的Jersey版本为2.30.1。

(2)以Java Bean的方式添加Jersey配置文件。在Spring Boot的发展中,官方更加推荐开发者使用Java Bean的方式进行一些必要的配置,从而增加项目的可读性。在此建议读者使用Java Bean的配置方式。在com.onyx.springbootdemo包下新建配置类Jersey- Config,代码如下:

package com.onyx.springbootdemo;

import com.onyx.springbootdemo.resource.UserResource;

import org.glassfish.jersey.server.ResourceConfig;

import org.springframework.stereotype.Component;

import javax.ws.rs.ApplicationPath;

@Component

@ApplicationPath("")

public class JerseyConfig extends ResourceConfig {

public JerseyConfig{

//packages("com.onyx.springbootdemo.resource");

register(UserResource.class); //register添加资源类

}

}

在此配置类中,添加UserResource作为对外提供的接口类,其功能类似于Spring MVC中Controller的功能。

(3)新建com.onyx.springbootdemo.resource包,并在此包下新建UserResource类,将其作为Web请求的入口,代码如下:

package com.onyx.springbootdemo.resource;import org.springframework.stereotype.Component;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;

@Component

@Path("/users")

public class UserResource {

@GET

@Produces(MediaType.APPLICATION_JSON)

public String get {

return "hello cc, i miss you";

}

}

添加一个/users的GET请求方法的返回,返回值为“hello cc,i missyou”。

(4)运行2.2节中SpringbootDemoApplication的main方法来启动Spring Boot项目,打开浏览器,然后访问http://localhost:8080/users,从而得到返回结果,如图2.6所示。

图2.6 Jersey的访问结果

通过对上面的/users链接的访问,完成Spring Boot与Jersey Restful的整合。如果业务需要复杂的返回,则可以在application.properties中进行配置,之后就能愉快地开发业务代码了。

来源:程序员高级码农II一点号

相关推荐