Java接口开发经验之谈

作者: 阿卧 | 来源:发表于2017-05-06 16:17 被阅读386次

    前言:现在开发中常使用前后端分离,后台开发使用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 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 list = messageMapper.selectByExample(example);return list;}
    

    Dao层的作用


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


    接口开发对异常的处理


    我总结了一下几点:

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

    请关注我的csdn: http://blog.csdn.net/u011521890/article

    相关文章

      网友评论

        本文标题: Java接口开发经验之谈

        本文链接:https://www.haomeiwen.com/subject/xgzetxtx.html