15.1.6 实战案例:服务请求
手写JAVA代码的方法是:在请求详情页面中,单击“写代码”按钮,切换到JAVA编辑器,这里显示出服务的JAVA文件,在其中找到和请求名称同名的方法,就是请求对应的处理逻辑方法,进行编辑即可。
服务的请求方式有5种,对于每种请求方式提供一个案例。同时融合2种传参方式和3种数据类型。案例配置情况见表15-1.
表15-1 案例配置
服务方法 |
请求方式 |
请求参数 |
返回类型 |
|
参数类型 |
传参方式 |
|||
查询商品 |
GET |
基础类型 |
RequestParam |
集合类型 |
新建商品 |
POST |
引用类型 |
RequestBody |
基础类型 |
更新商品 |
PUT |
引用类型 |
RequestBody |
基础类型 |
更新商品数量 |
PATCH |
引用类型 |
RequestBody |
基础类型 |
删除商品 |
DELETE |
基础类型 |
RequestParam |
基础类型 |
1、查询商品
查询商品请求:采用字符匹配的方法查询商品名称中包含传入字符的商品数据。请求方式使用GET,参数类型是基础类型,传参方式使用RequestParam,如图15-3所示。
图15-3 查询商品请求
l 请求方式GET
该方法常用于执行查询操作。但是需要注意的是GET会把所有的参数都放在URL中,GET中URL是有长度的限制的。因此就会有数据都明文暴露,用户可以直接看到,有数据长度的限制问题。
l 传参方式RequestParam
用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。设置RequestParam传参方式的参数,在服务生成的代码中参数将由@RequestParam标注。@RequestParam用于将请求参数映射到指定参数变量上。
查询商品请求的JAVA代码如下:
@Autowired
private ShangpinRepository shangpinRepository;
public List<Shangpin> zhaxunsp(String name) throws Exception{
return shangpinRepository.queryEntityByFshangpinmcLike(name);
}
其中queryEntityByFshangpinmcLike是自定义的数据方法。
2、新建商品
新建商品请求:接收前端页面传来的JSON数据,反序列化为商品数据对象,添加到仓库中。请求方式使用POST,参数类型是引用类型,传参方式使用RequestBody,如图15-4所示。
图15-4 新建商品请求
l 请求方式POST
POST方法把数据都存放在body里面,这样即突破了URL长度的限制;又保证用户无法直接看到。在提交表单数据时,比较常用。
l 传参方式RequestBody
RequestBody用于将Controller的方法参数,根据HTTP Request Header的content-Type的内容,通过适当的HttpMessageConverter转换器转换为JAVA类。使用场景是:POST或者PUT的数据是JSON格式或者XML格式,而不是普通的键值对形式。新建商品请求的传递参数是引用类型数据,所以只能使用RequestBody传参方式。
新建商品请求的JAVA代码如下:
@Autowired
private ShangpinRepository shangpinRepository;
public String xinjiansp(Shangpin xinxi) throws Exception{
Shangpin demo = new Shangpin();
demo = xinxi;
shangpinRepository.saveAndFlush(demo);
return "添加成功";
}
3、更新商品
更新商品请求:接收前端页面传来的JSON数据,反序列化为商品数据对象,更新仓库中原有数据的全部列。请求方式使用PUT,参数类型是引用类型,传参方式使用RequestBody,如图15-5所示。
图15-5 更新商品请求
l 请求方式PUT
PUT方法与GET相反,用于改变某些内容,即更新操作。PUT和PATCH的区别是PUT更新全部列,而PATCH更新部分列。因此PUT要求前端提供改变后的完整资源。
更新商品请求的JAVA代码如下:
@Autowired
private ShangpinRepository shangpinRepository;
public String gengxinsp(Shangpin xinxi) throws Exception{
Shangpin demo = new Shangpin();
demo = xinxi;
shangpinRepository.saveAndFlush(demo);
return "更新成功";
}
4、更新商品数量
更新商品数量请求:接收前端页面传来的JSON数据,反序列化为商品数据对象,更新仓库中原有数据的部分列。请求方式使用PATCH,参数类型是引用类型,传参方式使用RequestBody,如图15-6所示。
图15-6 更新商品数量请求
l 请求方式PATCH
主要用于更新部分字段。与PUT方法相比,PUT提交全部列的更新。而PATCH提交部分列的更新,如果数据不存在则新建。
更新商品数量请求的JAVA代码如下:
@Autowired
private ShangpinRepository shangpinRepository;
public String gengxinspsl (Shangpin xinxi) throws Exception{
Shangpin demo = shangpinRepository.findOne(xinxi.getFid());
demo = xinxi; //更新部分字段
shangpinRepository.saveAndFlush(demo);
return "更新成功";
}
5、删除商品
删除商品请求:接收前端页面传来的商品ID,删除仓库中原有数据。请求方式使用DELETE,参数类型是基础类型,传参方式使用PathVariable,如图15-7所示。
图15-7 删除商品请求
l 请求方式DELETE
DELETE方法用于删除某些资源。
删除商品请求的JAVA代码如下:
@Autowired
private ShangpinRepository shangpinRepository;
public String shanchusp(String productID) throws Exception{
shangpinRepository.delete(productID);
return "删除成功";
}