前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >写一个接口该注意什么?

写一个接口该注意什么?

作者头像
灬沙师弟
发布2023-03-07 08:53:48
1950
发布2023-03-07 08:53:48
举报
文章被收录于专栏:Java面试教程

前言:

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

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

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

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

正文:

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

代码语言:javascript
复制
@Api(tags = "A部分接口") //这个注解我们会用在类上

@ApiOperation("接口1")

@ApiImplicitParams({
  @ApiImplicitParam(name=参数1 ,value=参数1)
})

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

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

代码语言:javascript
复制
//一般情况下,我们都会在接口的实现层,写业务之前都会去判断一下参数
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就是我们自己定义的类。

代码语言:javascript
复制
@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());
    }


}

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

总结:

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java面试教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 正文:
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档