网站首页 >> 牛刀云小程序开发 >> 第2篇 开发模式 >> 服务开发 >> 开发JAVA

3.4.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中,GETURL是有长度的限制的。因此就会有数据都明文暴露,用户可以直接看到,有数据长度的限制问题。

 

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 Headercontent-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 "添加成功";

}

圆角矩形: 特别说明:页面调用新建商品请求时,传入的参数是JSON字符串,其中键是列标识,值就是新值。JSON字符串可以拼接,也可以使用数据集组件提供的row2json方法,将行对象转成JSON对象,再使用JSON.stringify将JSON对象转成JSON字符串,作为请求的参数
在新建商品请求中参数类型为引用类型,表示传入一条数据,其实也可以支持一次请求添加多条记录,参数变成多条记录后,请求参数就需要设置为集合类型,调用时就需要传JSON数组字符串。可以通过调用数据集组件提供的toJSON方法,将数据集中的记录全部转成JSON数组,再使用JSON.stringify将JSON数组转成JSON字符串,作为请求的参数

 

3、更新商品

更新商品请求:接收前端页面传来的JSON数据,反序列化为商品数据对象,更新仓库中原有数据的全部列。请求方式使用PUT,参数类型是引用类型,传参方式使用RequestBody,如图15-5所示。

15-5  更新商品请求

 

l  请求方式PUT

PUT方法与GET相反,用于改变某些内容,即更新操作。PUTPATCH的区别是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 "删除成功";

}