前后端分离 后端第一个接口的实现

续上篇通用响应的设计_快乐星球哇的博客-CSDN博客

1、service层

(1)接口


public interface CatalogService {
    CommonResponse<List<Category>> getCategoryList();
}

(2)实现

@Service("catalogService")
public class CatalogServiceImpl implements CatalogService {

    @Autowired
    private CategoryMapper categoryMapper;

    @Override
    public CommonResponse<List<Category>> getCategoryList() {
        List<Category> categoryList = categoryMapper.selectList(null);
        if(categoryList.isEmpty()){
            return CommonResponse.createForSuccessMessage("没有分类信息");
        }
        return CommonResponse.createForSuccess(categoryList);
    }
}

2、controller层

@Controller
@RequestMapping("/catalog/")
public class CatalogController {

    @Autowired
    private CatalogService catalogService;

    @GetMapping("categories")
    @ResponseBody
    public CommonResponse<List<Category>> getCategoryList(){
        return catalogService.getCategoryList();
    }
}

3、运行后到网页中查看,利用JSON格式化工具,可以看到,除了返回了status、查询的结果,还返回了msg和success,没有意义,所以说要进行修改

 (因为JSON会去找响应类当中所有的public并且是非静态的方法,构造方法除外,把这些值都序列化成对象返回)

4、回到通用响应类中

(1)在方法上加上@JsonIgnore,使得数据不会被序列化后返回

@JsonIgnore
    public boolean isSuccess(){
        return this.status == ResponseCode.SUCCESS.getCode();
    }

(2)在类上打上注解,使那些值为空的属性不会被返回

@Getter
//JSON序列化时,空的数据不会被包含进去
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CommonResponse<T> implements Serializable

5、结果:

这样就算完成啦

再来一个样例:

1、controller

    @GetMapping("categories/{id}")
    @ResponseBody
    public CommonResponse<Category> getCategory(@PathVariable("id") String categoryId){
        return null;
    }

2、service

(1)接口

CommonResponse<Category> getCategory(String categoryId);

(2)实现

    @Override
    public CommonResponse<Category> getCategory(String categoryId) {
        Category category = categoryMapper.selectById(categoryId);
        if(category == null){
            return CommonResponse.createForSuccessMessage("没有该ID的Category");
        }
        return CommonResponse.createForSuccess(category);
    }

3、再回到controller,修改返回值

    @GetMapping("categories/{id}")
    @ResponseBody
    public CommonResponse<Category> getCategory(@PathVariable("id") String categoryId){
        return catalogService.getCategory(categoryId);
    }

4、运行后在Postman中查看

(1)数据库中有DOGS类

(2)数据库中没有DOG类

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值