中秋過後,也該寫點東西了。本文主要講,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 οnclick='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 οnclick='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的三種形式,不足之處請多多指教。