springboot Restful开发

一,REST的概念及原则:

  1,REST(Representational State Transfer,表述性状态转移),定义了互联网软件的架构原则,是一种面向资源的架构风格。互联网中,客户端和服务端之间的互动传递的就只是资源的表述。我们上网的过程,就是调用资源的URI,获取它不同表现形式的过程。这种互动只能使用无状态协议HTTP,也就是说,服务端必须保存所有的状态,客户端可以使用HTTP的几个基本操作,使得服务端上的资源发生“状态转换”。

  2,原则:            

  • 网络上的所有事务都被抽象为资源
  • 每个资源都有一个唯一的资源标识符
  • 同一个资源具有多种表现形式(xml,json等)
  • 对资源的各种操作不会改变资源标识符
  • 所有的操作都是无状态的

  3,使用情况举例:

------->Spring Boot全面支持开发RESTful程序,通过不同的注解来支持前端的请求:

  •   @GetMapping,处理Get请求
  •   @PostMapping,处理Post请求
  •   @PutMapping,用于更新资源
  •   @DeleteMappping,处理删除请求
  •   @PatchMapping,用于更新部分资源

------->Controller中的映射注解

  @PathVariable,用于接收url路径上的参数

  @ModelAttribute,用于直接接受url?后面的参数 ,如url?id=123&name=456,然后直接转为POJO

二,Springboot下进行RESTful开发。

(一)在POM文件中引入Jpa,mysql,devtoolks依赖,并在build标签里开启热部署:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency> 
    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>

</dependency>

(二),配置Properties,数据库环境及JPA

 (三),配置idea的database连接数据库;注意需在下图框中引入具体jar包。(mysql5.0之后,驱动类变为com.mysql.cj.jdbc.Driver,且需要在url后加入?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true

 (四)书写repository,里面不用自定义方法。继承JpaRepository<UsersEntity,Integer>类即可。(之后会加关于此类的详细介绍)

(五)书写controller,完成查找,根据id查找,新增,修改,删除等方法的构建

@RestController
public class UsersController {
    @Autowired
    private UserRepository userRepository;
///查询所有数据
    @RequestMapping(value="users",method= RequestMethod.GET)
    public List<UsersEntity> findAll(){
        return userRepository.findAll();
    }
//根据id查询对象
    @RequestMapping(value="users/{id}",method=RequestMethod.GET)
    public UsersEntity findById(@PathVariable int id){
        return userRepository.findById(id).get();
    }
//保存对象
    @RequestMapping(value = "users",method=RequestMethod.POST)
    public UsersEntity saveUsers(@ModelAttribute UsersEntity users){
        return userRepository.save(users);
    }
    //修改对象
    @RequestMapping(value="users",method = RequestMethod.PUT)
    public UsersEntity updateUsers(@ModelAttribute UsersEntity users){
        return userRepository.saveAndFlush(users);
    }

    @RequestMapping(value="users/{id}",method = RequestMethod.DELETE)
    public  void deleteById(@PathVariable int id){
        userRepository.deleteById(id);

    }
}

三,进行Spring Data Rest的开发。

  Spring Data Rest作为Spring Data项目的子集,开发者只需使用注解@RepositoryRestResource标记,就可以把整个Repository转换为HAL风格的REST资源,目前已支持Spring Data JPA,Spring DataMongoDB,Spring Data Neo4j等等。简单点说,Spring Data Rest把我们需要编写的大量REST模板接口做了自动化实现。并符合HAL的规范。

官方文档:https://www.springcloud.cc/spring-data-rest-zhcn.html

  

原文地址:https://www.cnblogs.com/boogie-xy/p/12838610.html