中秋过后,也该写点东西了。本文主要讲,spring实现rest的三种形式。下面依次讲解
第一种形式,采用http get的请求方式,即问好传参的方式:
1、请求示例:http://127.0.0.1:8080/spring03/app/query?from=20190001&to=20190004
2、后端示例代码
/**
* 参数可以添加注解,但是命名要跟请求时的变量一致
* @param n1
* @param n2
* @return
*/
@GetMapping("query")
public List<Student> query(@RequestParam("from") Integer n1 , @RequestParam("to") Integer n2)
{
List<Student> result = new ArrayList<>();
for(Student s : DemoDB.list)
{
if(s.getId() >= n1 && s.getId() <= n2)
{
result.add( s );
}
}
return result;
}
第二种,通过HTTP post方式请求,通过表单提交数据,一下是示例代码
1、前端
<div class='main'>
<div class='row'>
<label> 学号 </label>
<input type='text' class='id' />
</div>
<div class='row'>
<label> 姓名 </label>
<input type='text' class='name' />
</div>
<div class='row'>
<label> 性别 </label>
<select class='sex'>
<option value='false'> 女 </option>
<option value='true'> 男 </option>
</select>
</div>
<div class='row'>
<label> 手机号 </label>
<input type='text' class='cellphone' />
</div>
<div class='row'>
<button onclick='M.save()'> 保存 </button>
</div>
</div>
var M = {}
M.save = function(){
// 取得用户的输入
var req = {};
req.id = Number( $('.id').val().trim()); // Number类型
req.name = $('.name').val().trim();
req.sex = $('.sex').val() == 'true'; // Boolean类型
req.cellphone = $('.cellphone').val().trim();
if(req.name.length==0) return;
// 默认地 jquery 按表单格式上传数据
jQuery.ajax({
url: 'app/add',
method: "POST",
data: req, // 请求数据,由jquery自动转成表单格式
dataType: 'json', // 将应答数据转成json
success: function(ans){
alert('成功');
},
error: function( jqXHR, textStatus, errorThrown){
alert('出错');
}
});
}
2、后端代码
@PostMapping("add")
public Map add(int id, String name, boolean sex, String cellphone)
{
System.out.println("0000");
Map<String,Object> result = new HashMap<>();
result.put("error", 0); // 错误码,0表示成功
result.put("reason", "OK"); // 错误描述
return result;
}
第三种形式,当我们要提交的数据很多时,采用第二种形式显然不科学,采用第一种更加不可能。所以第三种,请求时已经将数据转成JSON格式,一下是示例代码
1、前端
<div class='main'>
<div class='row'>
第3种形式:HTTP POST + JSON <br><br>
</div>
<div class='row'>
<label> 学号 </label>
<input type='text' class='id' />
</div>
<div class='row'>
<label> 姓名 </label>
<input type='text' class='name' />
</div>
<div class='row'>
<label> 性别 </label>
<select class='sex'>
<option value='false'> 女 </option>
<option value='true'> 男 </option>
</select>
</div>
<div class='row'>
<label> 手机号 </label>
<input type='text' class='cellphone' />
</div>
<div class='row'>
<button onclick='M.save()'> 保存 </button>
</div>
</div>
var M = {}
M.save = function(){
// 取得用户的输入
var req = {};
req.id = Number( $('.id').val().trim()); // Number类型
req.name = $('.name').val().trim();
req.sex = $('.sex').val() == 'true'; // Boolean类型
req.cellphone = $('.cellphone').val().trim();
if(req.name.length==0) return;
// 默认地 jquery 按表单格式上传数据
jQuery.ajax({
url: 'app/add2',
method: "POST",
contentType: 'application/json',
processData: false,
data: JSON.stringify(req),
dataType: 'json', // 将应答数据转成json
success: function(ans){
alert('成功');
},
error: function( jqXHR, textStatus, errorThrown){
alert('出错');
}
});
}
2、后端代码
@PostMapping("/add2")
public Map add2( @RequestBody Student stu)
{
//Student stu = new Student(id,name,sex, cellphone);
DemoDB.list.add( stu );
System.out.println("添加了一条记录: " + stu.getName());
Map<String,Object> result = new HashMap<>();
result.put("error", 0); // 错误码,0表示成功
result.put("reason", "OK"); // 错误描述
return result;
}
以上是,spring实现rest的三种形式,不足之处请多多指教。