妙用@RequestMapping(“/{xxx}“)

在我们实际开发中,会碰到调用多个接口,而传参大致相同的情况,为了减少代码量并且后期方便维护,我们可以使用注解RequestMapping("/{}")来解决,通过传入不同关键字来选择不同接口地址;

1、首先,我们在需要调用的万能接口上写上

@RequestMapping("/{type}")
@ResponseBody

,因为我们需要根据不同的type来区分不同的地址,故我们需要将type作为参数往下传递,并且用@PathVariable(“type”) String type进行注解;

2、我们根据传入不同的type使用switch动态拼接/选择我们的url地址,
3、后面的操作就是类似的执行该url(注:该方式仅在url调用方式相同时才能使用)

最后附上调用的完整代码,以及post方式调用http方法,并且在头部给其赋值并且得到返回值的实例

@RequestMapping("/{type}")
	@ResponseBody
	public String TypeList(String loginToken, String id, @PathVariable("type") String type, ServletResponse response) {
		HttpServletResponse res = (HttpServletResponse) response;
		res.setHeader("Access-Control-Allow-Origin", "*");
		res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
		String url1 = "";
		switch (type) {
		case "getAnswerList":
			url1 = url + "loadanswer.action?page=1&limit=10";// 获取到问题列表
			break;
		case "getTitleList":
			url1 = url + "loadsubject.action?answerid=" + id; // 获取到问题具体
			break;
		case "getServiceStation":
			url1 = url + "loadservicestation.action?page=1&limit=10"; // 获取到消防服务站详情
			break;
		case "getContent":
			url1 = url + "loadcontent.action?page=1&limit=10";// 获取到消防资讯
			break;
		case "getContentDetail":
			url1 = url + "loadcontentdetail.action?id=" + id;// 获取到消防资讯详细
			break;
		case "product":
			url1 = url + "loadproduct.action?page=1&limit=10";// 获取到积分商品列表
			break;
		case "productDetail":
			url1 = url + "loadproductdetail.action?productid=" + id;// 获取到积分商品详情
			break;
		case "exchange":
			url1 = url + "exchangeproduct.action?productid=" + id; // 兑换商品
			break;
		}

		// java通过http协议访问资源
		HttpClient client = new HttpClient();
		// 设置添加的参数为utf-8编码格式
		client.getParams().setContentCharset("utf-8");
		// 创建一个post方法
		GetMethod method = new GetMethod(url1);
		// 给方法添加一个头部参数
		method.addRequestHeader("token", loginToken);
		String strResult = "";
		try {
			// http对象执行方法
			client.executeMethod(method);
			// 方法获取回应值
			strResult = method.getResponseBodyAsString();

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return strResult;
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值