**
RESTful接口开发(一)
**
文章目录
前言
首先我们去接触REST设计风格的目的,还是更好地更快地进行接口开发,REST接口开发是和HTTP传输完全对接的,为什么,我会在下面的REST接口风格去介绍原因。
一、REST设计风格是什么?
资源是由URI来指定。对资源的操作包括获取、创建、修改和删除资源。
这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。通过操作资源的表现形式来操作资源。
常用操作如下:
由于目前我的项目是使用Spring Boot框架,基于该框架开发Restful 接口非常简单,通过不同的注解来支持前端的请求,除了经常使用的@RestController 注解外,Spring Boot 还提了一些组合注解。这些注解来帮助简化常用的 HTTP 方法的映射,这就是为什么说REST接口开发是和HTTP传输完全对接的原因。
Srping Boot 提供了与Rest 操作方式(GET、POST、PUT、DELETE,PATCH)对应的注解:
- @GetMapping,处理 Get 请求
- @PostMapping,处理 Post 请求
- @PutMapping,用于更新资源
- @DeleteMapping,处理删除请求
- @PatchMapping,用于更新部分资源
其中:
@PutMapping 主要是用来更新整个资源的,@PatchMapping 主要表示更新部分字段
之前我们也介绍过,Spring Boot 提供了专门做数据处理的控制器:@RestController ,其实这些注解就是我们使用的 @RequestMapping 的简写版本:@GetMapping 其实就等于@RequestMapping(value = “/xxx”,method = RequestMethod.DELETE) 。这种逻辑其实十分简单,在我的一篇文章中就有相关的内容,详见:restful注解使用案例。
二、Spring Boot 实现RESTful
1.设计接口
根据之前介绍的Restful 设计风格设计一组对用户操作的 RESTful API。
/user POST 创建用户
/user/id GET 根据 id 获取用户信息
/user PUT 更新用户
/user/id DELETE 根据 id删除对应的用户
以上,就是对user操作的接口定义,在实际项目的Restful API 接口文档还会定义全部请求的数据结构体。
2.创建entity类
import javax.persistence.*;
@Entity
@Table(name = "t_user_info")
public class User {
private static final long serialVersionUID = -3039703447657705408L;
@Id
@GeneratedValue
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@Column(name="age")
private int age;
@Column(name="country")
private String country;
public User() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", country='" + country + '\'' +
'}';
}
}
从上面可以看出,这个是引入了Spring Data JPA的,我们在springboot中去进行对数据库的交互,还是使用Spring Data JPA去进行交互会更加方便的。
3.创建repository类
import com.formelo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface UserJPARepository extends JpaRepository<User,Long> {
User findById(Long id);
List<User> findByCountry(String country);
}
上面没有使用注解去进行操作,是为了下面去写controller去进行操作,方便理解。
4.创建controller类
import com.formelo.entity.User;
import com.formelo.repository.UserJPARepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserJPARepository userJPARepository;
/**
* 查询用户列表
* @return
*/
@GetMapping(value = "/user")
public List<User> findUserList(){
return userJPARepository.findByCountry(China);
}
}
测试
上面就是使用Restful 设计风格案例,可以通过上面方法去开始调用,注意既然存在使用注解,那么一定要引入,不要忘记引入,调用逻辑也很简单,不再一一赘述。