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";
}
}