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版本控制、安全、身份验证、请求限制等方面。

相关推荐
man20171 小时前
【2024最新】基于springboot+vue的闲一品交易平台lw+ppt
vue.js·spring boot·后端
hlsd#1 小时前
关于 SpringBoot 时间处理的总结
java·spring boot·后端
路在脚下@2 小时前
Spring Boot 的核心原理和工作机制
java·spring boot·后端
幸运小圣2 小时前
Vue3 -- 项目配置之stylelint【企业级项目配置保姆级教程3】
开发语言·后端·rust
前端SkyRain3 小时前
后端Node学习项目-用户管理-增删改查
后端·学习·node.js
提笔惊蚂蚁3 小时前
结构化(经典)软件开发方法: 需求分析阶段+设计阶段
后端·学习·需求分析
老猿讲编程3 小时前
Rust编写的贪吃蛇小游戏源代码解读
开发语言·后端·rust
黄小耶@3 小时前
python如何使用Rabbitmq
分布式·后端·python·rabbitmq
宅小海5 小时前
Scala-List列表
开发语言·后端·scala
蔚一5 小时前
Javaweb—Ajax与jQuery请求
前端·javascript·后端·ajax·jquery