JAVA RESTful架构 (风格)操作demo



import java.util.Arrays;
import java.util.List;

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;



/**
 * RESTful架构 (风格)操作示例
 * 
 * @author Jonathan_SU
 *
 */
@RestController
public class TestRESTfulController {

	/**
	 * 访问方式(HTTP GET请求) : http://localhost:8070/api/test/1/6
	 * 
	 * @param id
	 * @param name
	 * @return
	 */
	@GetMapping("/test/{id}/{name}")
	public List<TheForm> query(@PathVariable String id, @PathVariable String name) {
		System.out.println("query..." + id + " " + name);
		TheForm form = new TheForm();
		form.setId(id);
		form.setName(name);
		form.setLength("9");
		return Arrays.asList(form);
	}

	/**
	 * 访问方式(HTTP POST请求) http://localhost:8070/api/test
	 * 需使用application/json格式,进行body内容的发送
	 * 
	 * @param form
	 * @return
	 */
	@PostMapping("/test")
	public String add(@RequestBody TheForm form) {
		System.out.println("save...form " + form);
		return "SUCCESS";
	}

	/**
	 * 访问方式(HTTP DELETE请求) http://localhost:8070/api/test/1
	 * 
	 * @return
	 */
	@DeleteMapping("/test/{id}")
	public String delete(@PathVariable String id) {
		System.out.println("delete...id " + id);
		return "SUCCESS";
	}

	/**
	 * 访问方式(HTTP PUT请求) http://localhost:8070/api/test
	 * 需使用application/json格式,进行body内容的发送
	 * 
	 * @return
	 */
	@PutMapping("/test")
	public String update(@RequestBody TheForm form) {
		System.out.println("update...form " + form);
		return "SUCCESS";
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
(1)项目简介 这个demo很简单,是一个记账小工程。用户可以注册、修改密码,可以记账、查找记账记录等。 (2)接口介绍 用户操作相关: post /users 用户注册 post /users/login 用户登录(这里我把login当成一个名词) put /users/pwd?userId=xxx&sign=xxx 用户修改密码 delete /users?uerId=xxx&sign=xxx 删除用户 记账记录操作相关: post /records?userId=xxx&sign=xxx 增加一条记账记录 get /records/:id?userId=xxx&sign=xxx 查询一条记账记录详情 put /records/:id?userId=xxx&sign=xxx 修改一条记账记录详情 get /records?查询参数&userId=xxx&sign=xxx 分页查询记账记录 delete /records/:id?userId=xxx&sign=xxx 删除一条记账记录 其中url中带sign参数的表示该接口需要鉴权,sign必须是url中最后一个参数。具体的鉴权方法是:用户登录后,服务器生成返回一个token,然后客户端要注意保存这个token,需要鉴权的接口加上sign签名,sign=MD5(url+token),这样可以避免直接传token从而泄露了token。这里我觉得接口最好还带一个时间戳参数timestamp,然后可以在服务端比较时间差,从而避免重放攻击。而且这样还有一个好处,就是如果有人截获了我们的请求,他想伪造我们的请求则不得不改时间戳参数(因为我们在服务器端会比较时间),这样一来sign势必会改变,他是无法得知这个sign的。如果我们没有加时间戳参数的话,那么,他截获了请求url,再重发这个请求势必又是一次合法的请求。我在这里为了简单一些,就不加时间戳了,因为这在开发测试阶段实在是太麻烦了。 (3)关于redis和数据库的说明 服务端在用户登录后,生成token,并将token保存到redis中。后面在接口鉴权的时候会取出token计算签名MD5(除sign外的url+token),进行比对。 这个demo搭建了一个redis主从复制,具体可以参考:http://download.csdn.net/detail/zhutulang/9585010 数据库使用mysql,脚本在 src/main/resources/accounting.sql
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值