restful

由于客户端有很多种,如果为每一种客户端写一个程序会很麻烦,因此为服务器端设计了一个API,为各种各类型的客户端提供了一个访问服务器的接口.这就是restful.

作用:

restful主要用于前后端数据的传输.

负责

1.进行url地址的访问以及传递参数(多数情况使用复数形式)

2.管理请求方式(共有7中,常用的五种)

(1).get方式

​ 用于查询

(2).post方式

​ 创建资源

(3).put方式

​ 修改全部

(4).patch方式

​ 修改部分

(5).delete方式

​ 删除

(6).head方式

​ 获取资源的源数据

(7).option方式

​ 获取一个客户端资源能够执行的方法

API:

应用程序编程入口

使用restful方式访问服务器:

首先在服务器端的方法上有与前面请求方式相对应的请求注解:

package cn.***.demo.controller;

import cn.***.demo.domain.Employee;
import cn.***.demo.utils.ResultBean;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/employees")
public class RestFullController {
    
    @GetMapping
    public ResultBean<Employee> list(){
        List<Employee> list=new ArrayList<>();
        Employee emp1 = new Employee();
        emp1.setId(1L);
        emp1.setName("mao1");
        list.add(emp1);
        Employee emp2 = new Employee();
        emp2.setId(2L);
        emp2.setName("mao2");
        list.add(emp2);
        return ResultBean.success(list);
    }
    
    //访问时需要传递两个参数,且参数在问号前面,相当于url地址
    @GetMapping("/{id}/{name}")
    public Employee get(@PathVariable Long id,@PathVariable String name){
        System.out.println("id="+id);
        Employee emp2 = new Employee();
        emp2.setId(id);
        emp2.setName(name);
        return emp2;
    }
    
    //添加
    //表示鼻祖有name参数,且页面必须带有token的请求才能访问改方法
    @PostMapping(params = "name",headers = "token")
    public ResultBean<Employee> save(){
        Employee emp2 = new Employee();
        emp2.setId(10L);
        emp2.setName("mao10");
        return ResultBean.success(emp2);
    }


    //put修改
    @PutMapping("/{id}")
    public ResultBean<Employee> update(@PathVariable Long id,String name,Integer age){
        Employee emp2 = new Employee();
        emp2.setId(id);
        emp2.setName(name);
        emp2.setAge(age);
        return ResultBean.success(emp2);
    }

    //patch修改
    @PatchMapping("/{id}")
    public ResultBean<Employee> patch(@PathVariable Long id,String name,Integer age){
        Employee emp2 = new Employee();
        emp2.setId(id);
        emp2.setName(name);
        emp2.setAge(age);
        return ResultBean.success(emp2);
    }

    //删除
    @DeleteMapping("/{id}")
    public ResultBean<Employee> delete(@PathVariable Long id){
        Employee emp2 = new Employee();
        emp2.setId(id);
        emp2.setName("xka2");
        return ResultBean.success(emp2);
    }
}

在前端访问的时候使用ajax方式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--导入jquery-->
    <script src="js/jquery/jquery.min.js"></script>

</head>
<body>
   <div id="app">

   </div>

<script>
    /*get请求*/
    /*$.get("/employees",null,function (data) {
        $("#app").html(data.data[0].name);
    });*/

    /*get传参请求*/
    /*$.get("/employees/1/lalal",null,function (data) {
        $("#app").html(data.name);
    });*/

    /*创建一个对象*/
   /* $.post("/employees",null,function (data) {
        $("#app").html(data.data.name);
    });*/

    /*修改,传递参数为100*/
     /*$.ajax({
     url:"/employees/100",
     data:null,
     success:function (data) {
         console.log(data);
         $("#app").html(data.data.id);
     },
     method:"PUT"
  });*/
    
    
    /*删除,传递参数为100*/
    /*$.ajax({
        url:"/employees/100",
        data:null,
        success:function (data) {
            console.log(data);
            $("#app").html("delete:"+data.msg);
        },
        method:"Delete"
    });*/

    /*创建对象.传递数据name,且带有页面数据token=1564156,请求方式为post*/
    $.ajax({
        url:"/employees",
        data: {name:"maomaocong"},
        beforeSend:function(request){
            request.setRequestHeader("token","1564156");
        },
        success:function (data) {
            console.log(data);
            $("#app").html("save:"+data.data.name);
        },
        method:"post"
    });
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值