spring實現REST的三種形式

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章