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 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的三种形式,不足之处请多多指教。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AndyWei147

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值