接口开发经验之谈

前言:现在开发中常使用前后端分离,后台开发使用springMVC框架进行后台接口的开发。经过最近的开发对接口开发有了一些新的体会,在这里做一下总结。
希望能和大家交流一下,并能吸取更多接口开发方面的经验。

接口开发格式的封装

返回接口的格式要有固定的格式,这样前端人员能够进行规律的解析。

  • 例子
{
  "code": 0,
  "msg": "成功",
  "data": {}
}

这样的格式是长使用的。key值可以根据习惯更改

那么根据这种数据类型,我们可以使用springMVC的ModelMap类型。
这里可以封装一个工具类,来进行固定格式的返回。

public class ModelMapHelper extends ModelMap {

    public void setCode(int code) {
        this.put("code",code);
    }

    public void setMsg(String msg) {
        this.put("msg",msg);
    }

    public void setData(Object data) {
        this.put("data",data);
    }
    public void setCodeAndMsg(int code,String msg){
        this.put("code",code);
        this.put("msg",msg);
    }
    public void setErrorMap(String errMsg){
        this.put("code",HssContants.CODE_SYSTEM_ERROR);
        this.put("msg",errMsg);
    }
    public void setInternalErrorMap(){
        this.put("code",HssContants.CODE_SYSTEM_ERROR);
        this.put("msg",HssContants.MSG_INTERNAL_ERROR);
    }
    public void setSuccessMap(String successInfo){
        this.put("code",HssContants.CODE_SUCCESS);
        this.put("msg",successInfo);
    }
    public void setSuccessMap(){
        this.put("code",HssContants.CODE_SUCCESS);
        this.put("msg",HssContants.MSG_SUCCESS);
    }
    public static void main(String[] args) {
        ModelMapHelper modelMapHelper = new ModelMapHelper();
        modelMapHelper.setCode(1);
        modelMapHelper.setMsg("hello");
        modelMapHelper.setData("你好");
        System.out.println("modelMapHelper = " + modelMapHelper);
    }
}

接口开发中各层分别的作用

Controller层的作用


我认为,controller层是接受数据请求(request)和返回数据结果(response)的。
因此 ,我常在controller层进行必要数据的判断,如果有错误直接返回视图(ModelMap)。


  • 例子
 @RequestMapping(value = "/save",method = RequestMethod.POST)
 public ModelMap saveMsg(@ModelAttribute Message msg){
        ModelMapHelper modelMapHelper = new ModelMapHelper();
        //做非空判断
        if(StringUtils.isEmpty(msg.getCustomerId())){
            modelMapHelper.setErrorMap(HssContants.MSG_NOT_CUSTOMERID);
            return modelMapHelper;
        }
        try{
        //将结果返回给视图
             messageService.saveMessage(msg);
             modelMapHelper.setSuccessMap(HssContants.MSG_SUCCESS_ADD);
             modelMapHelper.setData(msg);
        }catch (GeneralException g){
            modelMapHelper.setErrorMap(g.getMessage());
            g.printStackTrace();
            logger.warn("保存消息信息失败",g);
        }catch (Exception e){
            modelMapHelper.setInternalErrorMap();
            e.printStackTrace();
            logger.error("保存消息信息异常",e);
        }
        return modelMapHelper;
    }

Service层的作用


service层用来处理一些复杂的逻辑操作等。
具有承上启下的作用。

它常做的事情是:

  1. 根据业务逻辑,调用dao层,并处理数据。
  2. 返回直接的操作结果给controller层。

这样让看似复杂的操作让controller层调用起来看起来很简洁。


  • 例子(分页查询)
 public List<Message> getAll(Message message){
        Integer page = message.getPage();
        Integer rows = message.getRows();
        if(page !=null && rows!=null){
            PageHelper.startPage(page,rows, "id");
        }
        Example example = new Example(Message.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("customerId",message.getCustomerId());
        List<Message> list = messageMapper.selectByExample(example);
        return list;
    }

Dao层的作用


dao层是直接对数据库的操作,默认为大家都会。


接口开发对异常的处理


我总结了一下几点:

  1. 无论什么异常都要返回给视图一个结果(ModelMap)。(成功或者失败)
  2. 可以将异常分为自定义异常和系统内部异常。
    • 自定义异常,表示因为某些字段没有获取,无法进行操作的异常,这些异常是程序可以控制的异常。也就是开发人员知道的异常。
    • 系统内部异常,主要是数据库操作时抛出的不可控的异常。这些异常归结为系统异常。
  3. 定义好异常的代号,有利于排查错误信息。

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 《Linux驱动开发详解PDF》是一本关于Linux驱动程序开发的权威性指南。该书深入介绍了Linux内核的工作原理和驱动程序开发的实践技巧,涵盖了设备驱动的基本概念、驱动的架构设计、设备模拟、中断处理、内核锁、缓存机制、模块参数和虚拟文件系统等方面。 该书的作者Jonathan Corbet、Alessandro Rubini和Greg Kroah-Hartman都是Linux内核社区的重要人物,他们用简洁明了的语言描述了如何编写高效、可靠和安全的Linux驱动程序。读者可以通过阅读该书,掌握Linux驱动程序开发所需的基本技术,进而根据自己的需求开发出适合自己的驱动程序。 虽然本书需要一定的编程基础,但它也可以为初学者提供指导方向。该书的内容全面,能够建立起深刻的理解,并提供了众多的代码示例,这样读者可以跟着示例代码,进行实际操作和调试。 总地来说,《Linux驱动开发详解PDF》是一本值得阅读的书,它可以帮助Linux驱动程序开发者获得深入的理解、打好基础,也可以为初学者规划未来的进阶道路。 ### 回答2: Linux驱动开发详解PDF是一本介绍Linux驱动编写的教材。本书适合有一定编程基础的Linux系统程序员阅读。书籍内容非常丰富,包含了Linux内核及驱动开发的大部分内容,如字符设备驱动、内核同步原语、中断处理、定时器等。此外,书中还介绍了如何编写USB驱动、网络驱动等高级驱动。 在阅读本书之前,需要掌握C语言的基础知识以及Linux操作系统相关知识。书中涉及的Linux内核及驱动开发技术难度较高,需要有一定的编程基础和动手实践的经验。本书主要从一个内核开发者的角度讲述Linux驱动开发的细节和方法,包括了一些内核驱动的设计思路和开发方法。书中的代码示例也是非常珍贵的经验之谈,可以作为开发高质量Linux驱动的实践指南。 总之,《Linux驱动开发详解PDF》是一本非常优秀的Linux驱动开发实践指南,阅读本书对于想要深入学习Linux内核开发的程序员具有非常大的参考价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值