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

相关推荐
yuuki23323328 分钟前
【C语言】文件操作(附源码与图片)
c语言·后端
IT_陈寒31 分钟前
Python+AI实战:用LangChain构建智能问答系统的5个核心技巧
前端·人工智能·后端
无名之辈J1 小时前
系统崩溃(OOM)
后端
码农刚子1 小时前
ASP.NET Core Blazor简介和快速入门 二(组件基础)
javascript·后端
间彧1 小时前
Java ConcurrentHashMap如何合理指定初始容量
后端
catchadmin1 小时前
PHP8.5 的新 URI 扩展
开发语言·后端·php
少妇的美梦1 小时前
Maven Profile 教程
后端·maven
白衣鸽子1 小时前
RPO 与 RTO:分布式系统容灾的双子星
后端·架构
Jagger_2 小时前
SOLID原则与设计模式关系详解
后端
间彧2 小时前
Java: HashMap底层源码实现详解
后端