写一个接口该注意什么?

简介: 写一个接口该注意什么?

前言:

小面学弟:小面,我刚学完springboot,我想写接口,在企业里面,到底是咋样的一个步骤啊?都要写一点什么?

小面:嗯,这个问题问的好,我们在开发要考虑接口文档的编写,入参的验证,业务的正确与完整......

小面学弟:小面,那你给我讲讲呗~

小面:那涉及的内容有很多啊~ 我就讲一下接口文档,get、post的选择,入参的验证和全局异常处理吧~

正文:

我们写一个接口,首先就得提供好一个完整的接口文档,通常我们会使用swagger。举个例子,我们会用到以下注解:

@Api(tags = "A部分接口") //这个注解我们会用在类上
@ApiOperation("接口1")
@ApiImplicitParams({
  @ApiImplicitParam(name=参数1 ,value=参数1)
})

get还是post的选择:我们要考虑我们的接口是进行了什么操作,一般查询我们会使用Get请求,其他的操作会使用Post请求。如果你对接口的安全性有要求,那么建议使用post,因为get的参数会携带在url上。这里对get和post有疑问的小伙伴可以去查一下get和post 的区别。

入参的验证:对于一些特定的接口,我们对于入参是需要验证的,虽然是前端大多数情况下会进行一些验证,但是我们后端也是要做的。因为后端是不能相信任何端的输入的。

//一般情况下,我们都会在接口的实现层,写业务之前都会去判断一下参数
if(StringUtils.isEmpty(参数1)){
  throw new XXException("enum.code","enum.msg")
}
//我们也会根据业务的不同,不一定是判断非空,比如说判断一个手机号或者身份证是否格式正确,我们就要用正则去判断。
//上方enum 就是我们自己去定义的错误码枚举类。通常包含module,code,msg,args。我们也要做统一的异常处理类,因为这个XXException是我们自己定义的异常类
//所以我们通常要写一个GlobalExceptionHandler
//同时,我们接口的返回也是要定义好格式和枚举类的
return R 或者 AjaxResult
//这个R和AjaxResult,就是我们通常定义的返回类,里面包含了code,msg,data

这里给大家分享一下全局异常的写法。BaseException就是我们自己定义的类。

@RestControllerAdvice
public class GlobalExceptionHandler {
    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
    @ExceptionHandler(BaseException.class)
    public AjaxResult baseException(BaseException e,HttpServletRequest request)
    {
        String requestURI = request.getRequestURI();
        log.error("请求地址'{}',参数为:'{}',发生异常为:'{}',异常码为:'{}'", requestURI, e.getArgs(),e.getDefaultMessage(),e.getCode());
        AjaxResult ajaxResult = new AjaxResult(Integer.parseInt(e.getCode()),e.getDefaultMessage());
        return ajaxResult;
    }
    @ExceptionHandler(RuntimeException.class)
    public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request)
    {
        String requestURI = request.getRequestURI();
        log.error("请求地址'{}',发生未知异常.", requestURI, e);
        return AjaxResult.error(e.getMessage());
    }
    /**
     * 系统异常
     */
    @ExceptionHandler(Exception.class)
    public AjaxResult handleException(Exception e, HttpServletRequest request)
    {
        String requestURI = request.getRequestURI();
        log.error("请求地址'{}',发生系统异常.", requestURI, e);
        return AjaxResult.error(e.getMessage());
    }
}

一个简单的接口就基本上是完成了,有一个接口文档,入参验证,再完成你的业务,最后返回给你的前端。但是,对于一个完善的接口还有很多需要考虑到,比如接口防重放,接口限流,接口的高并发高可用....还有很多需要考虑的

总结:

这就是简单的需要考量的几点写接口的需求。

相关文章
|
6月前
|
存储 Java 容器
JAVACollection接口
JAVACollection接口
37 1
|
6月前
|
C++
几个实用的C++函数接口
几个实用的C++函数接口
|
2月前
|
网络协议 Java 数据格式
|
6月前
|
前端开发 API C#
C# 接口
C# 接口
43 1
|
6月前
|
存储 安全 Java
AVAList接口
AVAList接口
28 1
|
Java
接口2
接口2
70 1
|
Java
接口1
接口1
58 0
接口的使用
接口的使用
84 0
|
程序员
14 接口
14 接口
103 0
|
JavaScript
46、EventTarget 接口
DOM 节点的事件操作(监听和触发),都定义在EventTarget接口
144 0
下一篇
无影云桌面