Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。简单的来讲,对应的分别是查询,新增,修改,删除四种操作。基本已经满足了对于我们的大部分需求。
1.GET请求
一般情况下,通过接口查询相应的数据时一般是采用GET请求,
@RequestMapping(value = "/order/{no}", method = RequestMethod.GET)
public BaseResponse queryTaxiNo(@NotNull @PathVariable("no") String no) throws RuntimeException {
return BaseResponse.success(apiTaxiService.queryTaxiNo(no));
}
这里是采用的GET请求中的path参数,需要定义相应的注解来进行接收。
@RequestMapping(value = "/canUse", method = RequestMethod.GET)
public BaseResponse getTaxiCanUse(@NotNull String estimate_price) throws RuntimeException {
return BaseResponse.success(apiTaxiService.getTaxiCanUse(estimate_price));
}
这里采用的是GET请求中的query参数,不需要定义相关的注解,拿到参数后进而去进行封装拼接,最后在接口路径后面跟上?进行请求即可。注意采用query格式的时候,参数是不加密的,所以重要数据的话还是要自己斟酌一下。
这里推荐一个参数拼接方法,如果参数为空则不进行拼接的话,可以采用这样的方法。
public static String GetKeyValueUrl(Map<String, Object> parmeters, boolean removeEmptyParameter) {
String keyValueUrl = "";
if (removeEmptyParameter) {
for (Map.Entry<String, Object> e : parmeters.entrySet()) {
if (!StringUtils.isEmpty(e.getValue())) {
keyValueUrl += e.getKey() + "=" + e.getValue().toString() + "&";
}
}
} else {
for (Map.Entry<String, Object> e : parmeters.entrySet()) {
keyValueUrl += e.getKey() + "=" + e.getValue().toString() + "&";
}
}
if (keyValueUrl.endsWith("&")) {
keyValueUrl = keyValueUrl.substring(0, keyValueUrl.length() - 1);
}
return keyValueUrl;
}
简单的讲,前台首先用map接收需要拼接的参数,然后将map传进来的同时,传入一个true即可。最后用一个string类型接收即可。
另外一种不管参数是否为空都要拼接传值的话,可以适当采用另外一种方法。
public String getSing(Map md5params) {
//吧
String[] keyList = arraysMap(md5params);
//拼接参数
String sing = null;
for (int i = 0; i < keyList.length; i++) {
if (sing != null) {
sing = sing + keyList[i].toLowerCase() + "=" + md5params.get(keyList[i]) + "&";
} else {
sing = keyList[i].toLowerCase() + "=" + md5params.get(keyList[i]) + "&";
}
}
sing = sing + "md5key=" + key;
//MD532位加密并大写
return DigestUtils.md5Hex(sing).toUpperCase();
}
采用中间一部分即可。
2.POST方式
post方法一般用于创建订单或者创建的某个动作,有的公司还会将修改的操作也加入进来,讲实话,还是用post方法专注于一个动作最好。
这里是post方法中的formData格式,这种格式可以和普通的get传入参数一样,后台进行接收值即可,当然,这里值是加密的。
{
"toStation": "suzhou",
"queryKey": "61091f6881f67ad1c847d9e17ee0edff",
"passengers": [
{
"birthday": "",
"passengerName": "",
"passengerType": "1",
"idType": "1",
"ticketPrice": "59.5",
"idCard": "****",
"seatClass": "firstseat",
"sex": "1"
},
{
"birthday": "",
"passengerName": "",
"passengerType": "1",
"idType": "1",
"ticketPrice": "59.5",
"idCard": "****",
"seatClass": "firstseat",
"sex": "1"
}
],
"orderNo": "",
"contactInfo": {
"person": "",
"cellphone": ""
},
"acceptNoSeat": "0",
"appKey": "",
"trainNo": "",
"fromStation": ""
}
这就是第二种方式,自定义json传值,这个一般有两种做法,第一种就是前台定义好传入的json格式,后台定义相应的dto去进行接收(个人建议这种)。第二种就是后台定义jsonobject进行组装,然后在后台把定义好的json格式的参数传到第三方。。孰轻孰重想必不需要我多解释了。。。
3.PUT请求
put请求专注于update操作,但是与之相关的是还有一个patch请求,两者虽然都专注于update操作,但是前者是全局而言,后者是局限于某一条件或者范围而言,简单的说就是两者的粒度是不同的。大家可以百度一下。
put请求需要注意的是,虽然和post请求都是执行的改变动作,但是它所采用的参数传递需要用到query格式,否则是拿不到前台传递的参数,通俗的说就是参数为null.
4.DELETE请求
顾名思义,就是执行相应的删除操作,配合数据库进行相应的删除动作。
正常情况来讲,四种不同的请求方法用好以后,大部分的操作都是可以涵盖的了。