iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >如何写好后端API接口
  • 280
分享到

如何写好后端API接口

2024-04-02 19:04:59 280人浏览 薄情痞子
摘要

这篇文章主要讲解了“如何写好后端api接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何写好后端API接口”吧!接口交互前端和后端进行交互,前端按照约定

这篇文章主要讲解了“如何写好后端api接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何写好后端API接口”吧!

接口交互

前端和后端进行交互,前端按照约定请求 URL 路径,并传入相关参数,后端服务器接收请求,进行业务处理,返回数据给前端。

针对 URL 路径的 restful 风格,以及传入参数的公共请求头的要求(如:app_version,api_version,device  等),这里我就不介绍了,小伙伴们可以自行去了解,也比较简单。

我着重介绍一下后端服务器如何实现把数据返回给前端?

返回格式

后端返回给前端我们一般用 JSON 体方式,定义如下:

{     #返回状态码     code:integer,            #返回信息描述     message:string,     #返回值     data:object }

①CODE 状态码

Code 返回状态码,一般小伙伴们是在开发的时候需要什么,就添加什么。

如接口要返回用户权限异常,我们加一个状态码为 101 吧,下一次又要加一个数据参数异常,就加一个 102  的状态码。这样虽然能够照常满足业务,但状态码太凌乱了。

我们应该可以参考 Http 请求返回的状态码,下面是常见的 HTTP 状态码:

200 - 请求成功 301 - 资源(网页等)被永久转移到其它URL 404 - 请求的资源(网页等)不存在 500 - 内部服务器错误

如何写好后端API接口

我们可以参考这样的设计,这样的好处就把错误类型归类到某个区间内,如果区间不够,可以设计成 4 位数。

#1000~1999 区间表示参数错误 #2000~2999 区间表示用户错误 #3000~3999 区间表示接口异常

这样前端开发人员在得到返回值后,根据状态码就可以知道,大概什么错误,再根据 Message 相关的信息描述,可以快速定位。

②Message

这个字段相对理解比较简单,就是发生错误时,如何友好的进行提示。一般的设计是和 Code 状态码一起设计,如:

如何写好后端API接口

再在枚举中定义,状态码:

如何写好后端API接口

状态码和信息就会一一对应,比较好维护。

③Data

返回数据体,jsON 格式,根据不同的业务又不同的 JSON 体。

我们要设计一个返回体类 Result:

如何写好后端API接口

控制层 Controller

我们会在 Controller 层处理业务请求,并返回给前端,以 Order 订单为例:

如何写好后端API接口

我们看到在获得 Order 对象之后,我们是用的 Result 构造方法进行包装赋值,然后进行返回。

小伙伴们有没有发现,构造方法这样的包装是不是很麻烦,我们可以优化一下。

美观优化

我们可以在 Result 类中,加入静态方法,一看就懂:

如何写好后端API接口

那我们来改造一下 Controller:

如何写好后端API接口

代码是不是比较简洁了,也美观了。

优雅优化

上面我们看到在 Result 类中增加了静态方法,使得业务处理代码简洁了。

但小伙伴们有没有发现这样有几个问题:

  • 每个方法的返回都是 Result 封装对象,没有业务含义。

  • 在业务代码中,成功的时候我们调用 Result.success,异常错误调用 Result.failure。是不是很多余。

  • 上面的代码,判断 id 是否为 null,其实我们可以使用 hibernate validate 做校验,没有必要在方法体中做判断。

我们最好的方式直接返回真实业务对象,最好不要改变之前的业务方式,如下图:

如何写好后端API接口

这个和我们平时的代码是一样的,非常直观,直接返回 order 对象,这样是不是很完美。那实现方案是什么呢?

实现方案

小伙伴们怎么去实现是不是有点思路,在这个过程中,我们需要做几个事情:

  • 定义一个注解 @ResponseResult,表示这个接口返回的值需要包装一下。

  • 拦截请求,判断此请求是否需要被 @ResponseResult 注解。

  • 核心步骤就是实现接口 ResponseBodyAdvice 和 @ControllerAdvice,判断是否需要包装返回值,如果需要,就把  Controller 接口的返回值进行重写。

①注解类

用来标记方法的返回值,是否需要包装:

如何写好后端API接口

②拦截器

拦截请求,是否此请求返回的值需要包装,其实就是运行的时候,解析 @ResponseResult 注解。

如何写好后端API接口

此代码核心思想,就是获取此请求,是否需要返回值包装,设置一个属性标记。

③重写返回体

如何写好后端API接口

上面代码就是判断是否需要返回值包装,如果需要就直接包装。这里我们只处理了正常成功的包装,如果方法体报异常怎么办?

处理异常也比较简单,只要判断  body 是否为异常类。

如何写好后端API接口

怎么做全局的异常处理,篇幅原因,老顾这里就不做介绍了,只要思路理清楚了,自行改造就行。

④重写 Controller

如何写好后端API接口

在控制器类上或者方法体上加上 @ResponseResult 注解,这样就 OK 了,简单吧。到此返回的设计思路完成,是不是又简洁,又优雅。

感谢各位的阅读,以上就是“如何写好后端API接口”的内容了,经过本文的学习后,相信大家对如何写好后端API接口这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何写好后端API接口

本文链接: https://www.lsjlt.com/news/84317.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何写好后端API接口
    这篇文章主要讲解了“如何写好后端API接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何写好后端API接口”吧!接口交互前端和后端进行交互,前端按照约定...
    99+
    2024-04-02
  • 用ThinkPHP6写API接口(实现前后端分离一)
    一、TP6设置 首先搭建PHP使用环境,比如phpstudy等,安装composer,通过composer安装tp6。 composer create-project topthink/think tp6 运行TP6 php think...
    99+
    2023-08-31
    php 开发语言
  • php中如何写api接口
    在PHP中编写API接口有许多不同的方法和框架可以使用。以下是一种常见的方法: 定义路由:使用一个路由器或框架来定义API的路由...
    99+
    2023-10-24
    php
  • 编写后端接口步骤
    编写后端接口步骤 一 、在有数据库的前提下,后端接口的编写主要可以分为以下几个步骤: 1、设计数据库表结构 首先需要根据需求设计数据库表结构,并创建相应的表。可以使用 SQL 语句或者可视化的数据库工...
    99+
    2023-09-14
    mybatis java 数据库 spring boot 后端
  • SpringBoot如何连接MySQL获取数据写后端接口
    这篇文章将为大家详细讲解有关SpringBoot如何连接MySQL获取数据写后端接口,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.新建项目2.添加依赖<dependency> &...
    99+
    2023-06-25
  • thinkphp6怎么搭建后端api接口
    本篇内容介绍了“thinkphp6怎么搭建后端api接口”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、下载tp6我使用的是集成环境php...
    99+
    2023-06-29
  • 如何快速模拟出后端接口
    这篇文章主要讲解了“如何快速模拟出后端接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何快速模拟出后端接口”吧!一、moco 有什么用我做前端或者客户端...
    99+
    2024-04-02
  • javascript如何写后端
    JavaScript在Web开发中起到的作用越来越重要,不仅仅是在前端开发中,甚至在后端开发中也有广泛的应用。本文将介绍如何使用JavaScript作为后端编程语言。首先,我们需要了解JavaScript在后端编程中的优点。JavaScri...
    99+
    2023-05-22
  • api接口对接如何实现,php如何对接api
    这篇文章来分享下api接口对接如何实现,还有源码,希望对新手有所帮助。 什么是API 我的回答:API( 应用程序编程接口):一般来说,这是一套明确定义的各种软件组件之间的通信方法。 什么是API?我们不妨用一个小故事展示出来: 研发人员A...
    99+
    2023-09-01
    php 开发语言
  • nodejs怎么使用Express框架写后端接口
    本文小编为大家详细介绍“nodejs怎么使用Express框架写后端接口”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么使用Express框架写后端接口”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-06-30
  • python怎么编写api接口
    在Python中编写API接口需要使用Web框架来处理HTTP请求和响应。以下是使用Flask框架编写API接口的示例:```pyt...
    99+
    2023-08-25
    python
  • 如何用PHP编写简单的api数据接口
    目录一、编写接口所需几样工具或软件(均是win7+64位)二、安装后台开发环境三、正式编写接口四、总结一、编写接口所需几样工具或软件(均是win7+64位) 1.phpStudy、S...
    99+
    2024-04-02
  • 怎么使用Remix写API接口
    这篇文章主要介绍“怎么使用Remix写API接口”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Remix写API接口”文章能帮助大家解决问题。接口种类普通 get/post api:即可满足...
    99+
    2023-07-06
  • 怎么利用python写api接口
    这篇文章主要讲解了“怎么利用python写api接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用python写api接口”吧!一、操作步骤导入:import flask,json实...
    99+
    2023-06-30
  • C++如何调用已经写好的C接口
    目录1、C++调用C文件2、原因分析3、解决调用失败问题4、思考:那C语言能够调用C接口吗5、C接口既能被C++调用又能被C调用前言: 如何在C++代码中调用写好的C接口?...
    99+
    2024-04-02
  • thinkphp5接口如何写
    这篇文章主要讲解了“thinkphp5接口如何写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“thinkphp5接口如何写”吧!一、环境搭建首先,我们需要在本地搭建好一个运行ThinkPHP...
    99+
    2023-07-06
  • nodejs如何写接口
    这篇文章主要介绍“nodejs如何写接口”,在日常操作中,相信很多人在nodejs如何写接口问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nodejs如何写接口”的疑惑有所帮...
    99+
    2024-04-02
  • php怎么写查询api接口
    在PHP中,可以使用curl函数或者file_get_contents函数来查询API接口。1. 使用curl函数:```php$u...
    99+
    2023-08-30
    php
  • ECharts如何调用接口获取后端数据
    这篇文章主要介绍了ECharts如何调用接口获取后端数据的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ECharts如何调用接口获取后端数据文章都会有所收获,下面我们一起来看看吧。方法一:在mounted中使用...
    99+
    2023-07-04
  • nodejs使用Express框架写后端接口的全过程
    目录路由和接口接口传参GET接口POST接口-普通键值对POST接口-JSONPOST接口-form-data文件上传总结在写接口前,我们要明白什么是接口,在前端我们叫接口,而后端就...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作