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";
    }
}
相关推荐
GISer_Jing4 分钟前
sqb&ks二面(准备)
前端·javascript·面试
mask哥6 分钟前
详解mcp以及agen架构设计与实现
java·微服务·flink·大模型·ai agent·springai·mcp
谢尔登9 分钟前
【Webpack】模块联邦
前端·webpack·node.js
Propeller25 分钟前
【Android】View 交互的事件处理机制
android·java
用户490558160812526 分钟前
lvs会话同步
后端
用户490558160812526 分钟前
linux内核网络协议栈报文的处理过程
后端
Bottle41426 分钟前
深入探究 React Fiber(译文)
前端
夜宵饽饽27 分钟前
上下文工程实践 - 工具管理(上篇)
javascript·后端
杨杨杨大侠28 分钟前
Atlas Mapper 教程系列 (5/10):集合映射与嵌套对象处理
java·开源·github
ERP老兵_冷溪虎山29 分钟前
Python/JS/Go/Java同步学习(第十三篇)四语言“字符串转码解码“对照表: 财务“小南“纸式转码术处理凭证乱码崩溃(附源码/截图/参数表/避坑指南)
java·后端·python