• Restful Web Service


    Restful

    1.特点

    • RESTful是一种架构风格,强调简单、轻量级和对资源的状态less操作。
    • RESTful是通过HTTP协议进行通信的。
    • RESTful的应用程序可以调用运行在不同服务器上的服务或函数。
    • RESTful的接口通常使用JSON,但实际上它们都支持多种数据格式。
    • RESTful的接口都是无状态的,意味着每个请求都是独立的,服务器不会保存之前请求的状态。
    • RESTful的接口通常使用JSON。JSON更简洁,易于解析。
    • RESTful的接口通常不使用SOAP协议,也不遵循WS-*标准,更加简单和灵活。
    • RESTful的接口遵循REST架构原则,使用标准的HTTP方法(如GET, POST, PUT, DELETE)进行资源的操作。
    • RESTful的接口更简单、更轻量级,通常更易于开发和维护

    2.Rest设计规范

    在这里插入图片描述

    3.基于通用Mapper的Rest编写API

    启动类
    package com.saddam;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import tk.mybatis.spring.annotation.MapperScan;
    
    @SpringBootApplication
    //扫描mybatis通用mapper
    @MapperScan(basePackages = "com.saddam.mapper")
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class,args);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    mapper
    package com.saddam.mapper;
    
    import com.saddam.my.mapper.MyMapper;
    import com.saddam.pojo.Stu;
    
    public interface StuMapper extends MyMapper<Stu> {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    mapper.xml
    
    DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.saddam.mapper.StuMapper" >
      <resultMap id="BaseResultMap" type="com.saddam.pojo.Stu" >
        
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="age" property="age" jdbcType="INTEGER" />
      resultMap>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    service
    package com.saddam.service;
    
    import com.saddam.pojo.Stu;
    
    public interface StuService {
    
        public Stu getStuInfo(int id);
    
        public void saveStu();
    
        public void updateStu(int id);
    
        public void deleteStu(int id);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    impl
    package com.saddam.service.impl;
    
    import com.saddam.mapper.StuMapper;
    import com.saddam.pojo.Stu;
    import com.saddam.service.StuService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Propagation;
    import org.springframework.transaction.annotation.Transactional;
    
    @Service
    public class StuServiceImpl implements StuService {
    
        @Autowired
        public StuMapper stuMapper;
    
        @Transactional(propagation = Propagation.SUPPORTS)
        @Override
        public Stu getStuInfo(int id) {
            return stuMapper.selectByPrimaryKey(id);
        }
    
        @Transactional(propagation = Propagation.REQUIRED)
        @Override
        public void saveStu() {
    
            Stu stu = new Stu();
            stu.setName("jack");
            stu.setAge(19);
            stuMapper.insert(stu);
        }
    
        @Transactional(propagation = Propagation.REQUIRED)
        @Override
        public void updateStu(int id) {
    
            Stu stu = new Stu();
            stu.setId(id);
            stu.setName("lucy");
            stu.setAge(20);
            stuMapper.updateByPrimaryKey(stu);
        }
    
        @Transactional(propagation = Propagation.REQUIRED)
        @Override
        public void deleteStu(int id) {
            stuMapper.deleteByPrimaryKey(id);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    pojo
    package com.saddam.pojo;
    
    import javax.persistence.Id;
    
    public class Stu {
        @Id
        private Integer id;
    
        private String name;
    
        private Integer age;
    
        /**
         * @return id
         */
        public Integer getId() {
            return id;
        }
    
        /**
         * @param id
         */
        public void setId(Integer id) {
            this.id = id;
        }
    
        /**
         * @return name
         */
        public String getName() {
            return name;
        }
    
        /**
         * @param name
         */
        public void setName(String name) {
            this.name = name;
        }
    
        /**
         * @return age
         */
        public Integer getAge() {
            return age;
        }
    
        /**
         * @param age
         */
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    controller
    package com.saddam.controller;
    
    import com.saddam.service.StuService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    //@Controller
    @RestController
    public class StuFooController {
    
        @Autowired
        private StuService stuService;
        /*
        获取使用GetMapping
         */
        @GetMapping("/getStu")
        public Object getStu(int id){
            return stuService.getStuInfo(id);
        }
    
        /*
        增删改使用PostMapping
         */
        @PostMapping("/saveStu")
        public Object saveStu(){
            stuService.saveStu();
            return "OK";
        }
    
        @PostMapping("/updateStu")
        public Object updateStu(int id){
            stuService.updateStu(id);
            return "OK";
        }
    
        @PostMapping("/deleteStu")
        public Object deleteStu(int id){
            stuService.deleteStu(id);
            return "OK";
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
  • 相关阅读:
    ⑩ vue新特性
    基于SSM的餐厅点餐系统设计与实现(Java+MySQL)
    ads131a04 ADC verilog实现及仿真
    腾讯出来的3年测试经验小伙来面试,他这情况要求18K我该给吗?
    博客园主题美化中BUG修复方法
    Smale 论文列表: 多标签与标签分布学习方向
    RabbitMQ队列持久化的重要性与意义
    【14】c++11新特性 —>共享智能指针
    Nuxt 菜鸟入门学习笔记七:SEO 和 Meta 设置
    9 网关的作用
  • 原文地址:https://blog.csdn.net/m0_56525833/article/details/137401916