RESTful API ,以及如何使用它构建 web 应用程序

关于REST

这是一种软件架构风格,是英文(Representational State Transfer)的缩写,翻译为表现层状态转换,是由Roy Thomas Fielding博士创建的,在他的博士论文中提出的。这个架构并没有创造新技术、组件或者服务,不是一种标准,主要是一种架构的约束条件和原则,是一种软件架构的风格,一种设计风格。目的就是为了在符合架构原理前提下,能够理解和评估在网络基础上的应用软件的架构设计,得到功能强、性能好、适宜通信的架构。(作者文章中所表达)就是说符合这个风格的架构都叫做restful,遵循rest架构风格的应用编程接口estful web的应用服务进行交互,就称为restfulapi。

REST是设计风格而不是标准。REST通常基于使用HTTPURI,和XML以及HTML这些现有的广泛流行的协议和标准。

  • 资源是由URI来指定。

  • 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。

  • 通过操作资源的表现形式来操作资源。

  • 资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。

REST六个指导原则

  1. 定义资源:确定所需资源的名称、属性及其关系。

  2. 设计API:基于HTTP方法和URL,设计API接口来对这些资源进行创建、读取、更新和删除等操作。

  3. 实现API:根据API设计规范来实现API接口,可以使用任何服务器端编程语言。

  4. 测试API:使用各种客户端工具或者编写自动化测试来验证API的正确性和可靠性。

  5. 文档API:编写API文档,包括API的使用说明、参数、返回值等细节。

  6. 发布API:将API部署到服务器上,并公开给客户端应用程序使用。

RESTful API

RESTful API是一种基于HTTP协议的Web应用程序编程接口,它提供了一组标准的URL、HTTP请求方法、HTTP响应码和MIME类型等,以实现客户端与服务器端之间的数据交互和资源访问。

RESTful API是 REST 的一种实现,因此要要遵循其6个原则

ESTful API构建Web应用程序优点

  1. 独立性:由于RESTful API使用HTTP协议,因此客户端和服务器之间没有任何依赖关系。

  2. 可扩展性:定义良好的API可以增加新的资源和功能,而不需要更改现有的API接口。

  3. 易于维护:API遵循标准HTTP方法和状态码,使其易于维护、调试和测试。

  4. 可重用性:API接口可以重复使用,使其易于构建新的客户端应用程序。

  5. 安全性:RESTful API使用标准的HTTP身份验证和授权机制,可以确保API的安全性。

实现

Spring MVC框架实现Restful API

1.创建一个Spring MVC项目

2.定义一个Controller类,该类用于处理Restful API请求。

3.在Controller类中定义方法,用于处理HTTP请求,并返回JSON格式的数据。

4.配置Spring MVC框架,让它知道哪些类是Controller类,并将请求映射到相应的方法。

5.编写测试用例,测试API接口的功能和正确性。

以下是一个简单的例子:

1.创建一个Spring MVC项目,并导入Spring MVC依赖库。

2.在Controller类中定义一个方法,用于处理HTTP GET请求,并返回一个JSON格式的数据。

java 复制代码
@RestController
@RequestMapping("/api")
public class MyController {
    @GetMapping("/users")
    public List<User> getUsers() {
        List<User> userList = new ArrayList<>();
        User user1 = new User("Tom", 18);
        User user2 = new User("Jerry", 20);
        userList.add(user1);
        userList.add(user2);
        return userList;
    }
}

3.配置Spring MVC框架,让它知道哪些类是Controller类,并将请求映射到相应的方法。

java 复制代码
<!-- 配置Spring MVC框架 -->
<mvc:annotation-driven/>

<!-- 配置包扫描 -->
<context:component-scan base-package="com.example.controller"/>

<!-- 配置请求映射 -->
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/>
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false"/>
    <property name="favorParameter" value="true"/>
    <property name="parameterName" value="mediaType"/>
    <property name="defaultContentType" value="application/json"/>
    <property name="mediaTypes">
        <map>
            <entry key="xml" value="application/xml"/>
            <entry key="json" value="application/json"/>
        </map>
    </property>
</bean>

4.编写测试用例,测试API接口的功能和正确性。

java 复制代码
@Test
public void testGetUsers() throws Exception {
    mvc.perform(MockMvcRequestBuilders.get("/api/users").accept(MediaType.APPLICATION_JSON))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].name").value("Tom"))
            .andExpect(MockMvcResultMatchers.jsonPath("$[1].name").value("Jerry"));
}

用springboot实现一个简单的Restful API

java 复制代码
@RestController
public class HelloWorldController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello World!";
    }

    @GetMapping("/hello/{name}")
    public String sayHelloToName(@PathVariable("name") String name) {
        return "Hello " + name + "!";
    }

    @PostMapping("/hello")
    public String sayHelloWithPost(@RequestBody String name) {
        return "Hello " + name + "!";
    }
}

在这个示例中,使用了@RestController注解来标记这个类为一个RESTful Controller。

三个请求处理方法分别处理了GET请求、带路径参数的GET请求和POST请求。在第一个方法中,直接返回了一个字符串"Hello World!";在第二个方法中,使用了@PathVariable注解来获取路径参数,并返回一个包含参数的字符串;在第三个方法中,使用了@RequestBody注解来获取POST请求的请求体,并返回一个包含请求体的字符串。

值得注意的是,此示例没有使用数据库或其他持久化层,仅仅用来演示如何构建一个简单的Spring Boot Restful API。

如何用Java实现一个类似大众点评的Restful API接口

要实现类似大众点评的Restful API接口,你可以按照以下步骤进行:

  1. 使用Java编写一个基于Spring框架的Web应用程序。
  2. 创建一个或多个Controller类,用于处理不同的API请求。你可以使用注释来定义不同的请求方法和参数。
  3. 对于每个请求,Controller类中的方法应该返回一个ResponseEntity对象,表示API的响应。ResponseEntity对象包含了响应的状态码、HTTP头以及响应体。
  4. 使用Spring的依赖注入机制,将服务层的业务逻辑注入到Controller中。这样,Controller就可以调用服务层的方法来处理API请求。
  5. 使用数据访问对象(DAO)来访问数据库。你可以使用Spring的JdbcTemplate或者ORM框架,例如Hibernate或MyBatis。
  6. 在Controller中,你可以使用 HttpServletRequest 对象来获取请求参数和处理身份验证等安全功能。
  7. 对于每个请求,你可以定义一个路由(route),用于将请求映射到正确的Controller方法。
  8. 最后,确保你的API具有适当的错误处理和文档。你可以使用Swagger或ApiDoc等工具来自动生成API文档。

需要注意的是,Restful API设计还需要考虑到API版本控制、安全、身份验证、请求限制等方面。

相关推荐
cnsxjean3 小时前
SpringBoot集成Minio实现上传凭证、分片上传、秒传和断点续传
java·前端·spring boot·分布式·后端·中间件·架构
财富探秘者3 小时前
贵州茅台[600519]行情数据接口
大数据·c语言·python·算法·金融·restful
kingbal3 小时前
SpringCloud:Injection of resource dependencies failed
后端·spring·spring cloud
刘天远4 小时前
django实现paypal订阅记录
后端·python·django
ℳ₯㎕ddzོꦿ࿐4 小时前
Spring Boot集成MyBatis-Plus:自定义拦截器实现动态表名切换
spring boot·后端·mybatis
逸风尊者4 小时前
开发也能看懂的大模型:RNN
java·后端·算法
小钟不想敲代码6 小时前
第4章 Spring Boot自动配置
java·spring boot·后端
hummhumm6 小时前
第33章 - Go语言 云原生开发
java·开发语言·后端·python·sql·云原生·golang
AskHarries6 小时前
利用 OSHI获取机器的硬件信息
java·后端
凡人的AI工具箱7 小时前
40分钟学 Go 语言高并发:【实战】并发安全的配置管理器(功能扩展)
开发语言·后端·安全·架构·golang