[srpingboot]菜鸟学习-ReSTful

REST即表述性状态转移(英文:Representational State Transfer,简称REST),是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。它主要描述了资源的表述以及资源之间的联系。而restful是指符合REST协议的Web API设计风格。它是一种基于HTTP协议实现的可伸缩、灵活、简洁、轻量级、易于扩展和维护的API设计方式。RESTful API使用HTTP协议的GET、POST、PUT或DELETE等请求方法访问和操作资源,使得API具有良好的可读性、可维护性和可扩展性。它适用于任何网络应用场景,特别是适用于移动应用。REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。

以下是一个简单的RESTful API示例,使用Node.js和Express框架:

const express = require('express');
const app = express();

// Mock data
const users = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' },
  { id: 3, name: 'Bob' }
];

// Get all users
app.get('/users', (req, res) => {
  res.json(users);
});

// Get user by id
app.get('/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (user) {
    res.json(user);
  } else {
    res.status(404).json({ message: 'User not found' });
  }
});

// Create new user
app.post('/users', (req, res) => {
  const user = {
    id: users.length + 1,
    name: req.body.name
  };
  users.push(user);
  res.status(201).json(user);
});

// Update user by id
app.put('/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (user) {
    user.name = req.body.name;
    res.json(user);
  } else {
    res.status(404).json({ message: 'User not found' });
  }
});

// Delete user by id
app.delete('/users/:id', (req, res) => {
  const userIndex = users.findIndex(u => u.id === parseInt(req.params.id));
  if (userIndex !== -1) {
    users.splice(userIndex, 1);
    res.status(204).send();
  } else {
    res.status(404).json({ message: 'User not found' });
  }
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

以上示例中,我们使用Express框架创建了一个简单的API。我们定义了四个路由:

  • GET /users:返回所有用户的列表。
  • GET /users/:id:返回具有指定id的用户的详细信息。
  • POST /users:在服务器上创建一个新的用户。
  • PUT /users/:id:使用新的用户信息更新具有指定id的用户。
  • DELETE /users/:id:删除具有指定id的用户。

这些路由使我们的API符合RESTful架构。我们可以使用相应的HTTP方法和请求路径来执行各种操作。

Spring Boot框架创建RESTful API示例:

1.创建Spring Boot项目

使用Spring Initializr(https://start.spring.io/)或者Eclipse/IntelliJ IDEA创建一个新的Spring Boot项目。

2.添加依赖

pom.xml文件中,添加spring-boot-starter-web依赖,用于支持Web应用程序。


  
    org.springframework.boot
    spring-boot-starter-web
  

3.创建实体类

我们创建一个名为User的实体类,该类将作为我们的数据模型

public class User {
  private Long id;
  private String name;
  private String email;

  // Constructors, getters and setters
}

4.创建控制器

我们创建一个名为UserController的REST控制器类,用于处理用户相关的HTTP请求。

@RestController
@RequestMapping("/users")
public class UserController {
  private Map users = new HashMap<>();

  @GetMapping("/")
  public List getAllUsers() {
    return new ArrayList<>(users.values());
  }

  @GetMapping("/{id}")
  public User getUserById(@PathVariable Long id) {
    return users.get(id);
  }

  @PostMapping("/")
  public User createUser(@RequestBody User user) {
    user.setId(Long.valueOf(users.size() + 1));
    users.put(user.getId(), user);
    return user;
  }

  @PutMapping("/{id}")
  public User updateUser(@PathVariable Long id, @RequestBody User user) {
    user.setId(id);
    users.put(id, user);
    return user;
  }

  @DeleteMapping("/{id}")
  public void deleteUser(@PathVariable Long id) {
    users.remove(id);
  }
}

在控制器类中,我们使用@RestController注释将其指定为REST控制器。定义以下请求映射:

  • GET /users:返回所有用户的列表。
  • GET /users/{id}:返回具有指定id的用户的详细信息。
  • POST /users:在服务器上创建一个新的用户。
  • PUT /users/{id}:使用新的用户信息更新具有指定id的用户。
  • DELETE /users/{id}:删除具有指定id的用户。

@RequestBody注解将HTTP请求的请求体映射到User对象。@PathVariable注释将URI路径变量映射到方法参数。

5.运行应用程序

可以使用mvn spring-boot:run命令或在IDE中运行Spring Boot应用程序。启动后,可以使用任何REST客户端(如Postman)测试API。

你可能感兴趣的:(springboot,学习,restful,后端,spring,boot)