1 简介
1.1 简介
今天Fogo实现框架实现了接口的几个请求方法,GET、POST、PUT,以及接收参数的方法。 HTTP请求的query参数、post参数、raw参数在该集合中基本不用。 通过几个内置的注释就全部搞定了~~
2. 查询与发布
在Java中,Query参数和Post参数混合在一起。 简单来说,就是在Query中设置一个id,在Post中设置一个id。 通过Java获取id参数就会得到Post参数。
也就是说,如果只有Query参数,则获取Query参数。 如果Query和Post有同名参数,则获取Post参数。 这个特性迫使我们在设计函数时不要在Query和Post中设计同名的参数。 出于不同的目的。
2.1@
根据Java的这个特点,设计了一个@注解,可以用来获取Query或者Post参数,也是Post优先的规则。
2.2@
@包含了POST的原始数据,但是你无法通过它获取数据或x-www-form-data。
但你可以用它来获取RAW数据,然后用它进行二次处理,例如:将其解析为JSON数据。
3.获取
首先,我们使用 GET 方法。 GET 方法只有查询参数。 获取Query参数比较简单。 直接定义方法参数即可。 方法参数的名称就是Query的参数名称。
GET方法由@指定。
@GetMapping("/net.tongfu.restful.get")
public Map methodGet(
String queryParam1,
Integer queryParam2
){
Map map = new linkedHashMap<>();
map.put("queryParam1", queryParam1);
map.put("queryParam2", queryParam2);
return map;
}
4. 邮寄
然后我们还有另一个 POST 方法。 前面提到,Java对Query和Post并不敏感,所以我们在处理POST请求时必须区分Query参数和Post参数的名称。
POST方法由@指定。
@PostMapping("/net.tongfu.restful.post")
public Map methodPost(
String queryParam1,
Integer queryParam2,
@RequestParam String postParam1,
@RequestParam Integer postParam2
){
Map map = new linkedHashMap<>();
map.put("queryParam1", queryParam1);
map.put("queryParam2", queryParam2);
map.put("postParam1", postParam1);
map.put("postParam2", postParam2);
return map;
}
5. 放置
让我们再次测试 PUT 方法。 PUT方法和POST方法基本相同。
PUT方法由@指定。
@PutMapping("/net.tongfu.restful.put")
public Map methodPut(
String queryParam1,
Integer queryParam2,
@RequestParam String postParam1,
@RequestParam Integer postParam2
){
Map map = new linkedHashMap<>();
map.put("queryParam1", queryParam1);
map.put("queryParam2", queryParam2);
map.put("postParam1", postParam1);
map.put("postParam2", postParam2);
return map;
}
6.
最后我们测试一下该方法,该方法与GET方法基本相同。
方式用@表示。
@DeleteMapping("/net.tongfu.restful.delete")
public Map methodDelete(
String queryParam1,
Integer queryParam2
){
Map map = new linkedHashMap<>();
map.put("queryParam1", queryParam1);
map.put("queryParam2", queryParam2);
return map;
}
7. 默认
默认情况下,如果我们获取到客户端未提供的参数,我们将得到一个空值。
但这个空值并不是我们所期望的。 为了避免这种情况,要么强制客户端提供,要么给定一个默认值。
@ 可以在定义时设置一个默认值,当客户端不提供参数时返回这个默认值。
@PostMapping("/net.tongfu.restful.default")
public Map methodDefault(
String queryParam1,
Integer queryParam2,
@RequestParam(defaultValue = "默认") String postParam1
){
Map map = new linkedHashMap<>();
map.put("queryParam1", queryParam1);
map.put("queryParam2", queryParam2);
map.put("postParam1", postParam1);
return map;
}
8. 强制
默认情况下,通过@指定的参数,如果客户端不提供该参数,则会报400错误。
如果我们不要求客户端提供某个参数,我们可以使用@来控制是否必须提供该参数。
@PostMapping("/net.tongfu.restful.require")
public Map methodRequire(
String queryParam1,
Integer queryParam2,
@RequestParam(required = false) String postParam1
){
Map map = new linkedHashMap<>();
map.put("queryParam1", queryParam1);
map.put("queryParam2", queryParam2);
map.put("postParam1", postParam1);
return map;
}
9.JSON
如果我们需要处理JSON数据,我们需要通过@接收RAW数据,然后解析RAW数据。
@PostMapping("/net.tongfu.restful.json")
public Map methodQueryAndPost(
String param1,
Integer param2,
@RequestBody String jsonString
){
Map map = new linkedHashMap<>();
JSONObject jsonObject;
jsonObject = JSONObject.fromObject(jsonString);
map.put("queryParam1", param1);
map.put("queryParam2", param2);
map.put("jsonParam1", jsonObject.get("param1").toString());
map.put("jsonParam2", Integer.valueOf(jsonObject.get("param2").toString()));
return map;
}
10. 总结
今天富哥就带着童鞋们对框架的样式接口的各种请求方法的参数接收方法进行了系统的学习。 使用开发接口时,这些技术一定要掌握~~