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

启动类
scala 复制代码
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);
    }
}
mapper
java 复制代码
package com.saddam.mapper;

import com.saddam.my.mapper.MyMapper;
import com.saddam.pojo.Stu;

public interface StuMapper extends MyMapper<Stu> {
}
mapper.xml
xml 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!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" >
    <!--
      WARNING - @mbg.generated
    -->
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="age" property="age" jdbcType="INTEGER" />
  </resultMap>
</mapper>
service
java 复制代码
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);
}
impl
java 复制代码
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);
    }
}
pojo
java 复制代码
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;
    }
}
controller
java 复制代码
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";
    }
}
相关推荐
让学习成为一种生活方式3 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
web行路人7 分钟前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
晨曦_子画8 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
假装我不帅28 分钟前
asp.net framework从webform开始创建mvc项目
后端·asp.net·mvc
超雄代码狂29 分钟前
ajax关于axios库的运用小案例
前端·javascript·ajax
南宫生31 分钟前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
神仙别闹31 分钟前
基于ASP.NET+SQL Server实现简单小说网站(包括PC版本和移动版本)
后端·asp.net
长弓三石37 分钟前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
小马哥编程39 分钟前
【前端基础】CSS基础
前端·css
Heavydrink44 分钟前
HTTP动词与状态码
java