服务器响应数据格式,ServerResponse(服务器统一响应数据格式)

本文介绍了ServerResponse作为服务器统一响应数据格式的重要性及其演进过程,包括如何从直接返回数据到增加状态码、消息等字段。同时,文章指出在SpringCloud的Feign中可能存在的反序列化问题及解决方案,并强调了最佳实践可能不适用于每个项目,需要根据实际需求进行调整。
摘要由CSDN通过智能技术生成

前言:

其实严格来说,ServerResponse应该归类到common包中。但是我实在太喜欢这玩意儿了。而且用得也非常频繁,所以忍不住推荐一下。

借此机会,申明一点,这个系列的类并不是都是我原创的,都是我从各个项目中看到的,感觉非常赞,一点点攒起来的。当然后面也有我自己写的一些工具。重要的是学习,从中学习到知识,就算脱离了这些工具,我们也可以自己写一个。

场景:

这个场景我真的觉得只要写过接口的,都需要这个。

其实,在刚刚接触代码的时候,看到大佬接口返回的JSON。JSON里面除了必要的data外,还有各种状态码,状态说明什么的,感觉很厉害。后来渐渐明白了,这个东西是必须的,你不写试试,看与你交互的大佬会不会把你拍成肉饼。

演进:

1.直接返回请求的数据:

后端:呀,前端发来的这个请求,数据库没有对应数据啊。返回一个null吧。

前端:大哥,你返回给我一个null,是不是接口有问题啊?

后端:那是你请求的数据在数据库中没有。

前端:哦。那我知道了。

后端:呀,前端发来的这个请求,参数不对啊(可能必要参数为空什么的)。我要返回null。

前端:大哥,你给我返回个null,是数据库没有对应数据嘛?但是这个条件应该有数据啊。

后端:不是的,你请求的参数有问题啊。

前端:大哥,那你倒是给我要给回馈啊。否则,我还以为是你接口没数据呢。

后端:好的吧。让我想想。

2.返回一个对象ResultVo(包含data与code,data为请求的数据,code为状态码):

后端:嘿,兄弟。我想到了一个好办法,我写了一个ResultVo,它是这样的……%¥&¥……。

前端:好的。我了解了。

后端:呀,前端发来的这个请求,没有足够的权限啊。我要返回data=null&code=10。然后在常量表中设置一下。

前端:我刚刚无意间发现,你的code又增加了10,什么意思?

后端:啊。忘了告诉你了。code=10表示权限不足。

前端:那我需要就这个情况,给用户提供专门的说明呀。

后端:这样效率太低了。而且以后可能会有更复杂多变的情况。我得想想办法。

3.返回一个对象ResultVo2(新增msg属性,充当响应的说明):

后端:嘿,兄弟。我将原来的ResultVo进行了升级,它是这样的&……%&%&……。

前端:这挺不错的,以后很多地方,我可以直接显示msg就行了。但是,现在有一个问题,现在的code太多了。我每次进行处理时都要遍历判断,而我常常只需要判断这个响应是否成功了。

后端:这样啊。我还得再改进一下。

4.ServerResponse:

后端:请教大佬后,我得到了非常棒的解决方案。并且,我根据自己的业务情况,进行细微的调整,这下就没什么问题了。

前端&后端:我们感受到了效率的显著提升,以及最为重要的代码规范(契约)。

作用:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您想让ESP32与云服务器进行通信,您可以使用以下步骤: 1. 在您的云服务器上安装PHP。您可以使用以下命令在Ubuntu上安装PHP: ``` sudo apt-get update sudo apt-get install php ``` 2. 编写一个PHP脚本来处理ESP32发送的请求。您可以使用以下代码作为参考: ``` <?php // 获取ESP32发送的数据 $data = $_POST['data']; // 将数据写入文件 $file = fopen("data.txt", "w"); fwrite($file, $data); fclose($file); // 返回响应 echo "OK"; ?> ``` 3. 将PHP脚本上传到您的云服务器。您可以使用FTP工具(如FileZilla)将文件上传到服务器上。 4. 在ESP32上编写代码来向服务器发送请求。您可以使用以下代码作为参考: ``` #include <WiFi.h> #include <HTTPClient.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; void setup() { // 连接到Wi-Fi网络 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } } void loop() { // 发送POST请求到服务器 HTTPClient http; http.begin("http://your_server_address/your_php_script.php"); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); String data = "data=Hello world!"; int httpResponseCode = http.POST(data); if (httpResponseCode > 0) { String response = http.getString(); Serial.println(response); } else { Serial.println("Error: " + http.errorToString(httpResponseCode)); } http.end(); delay(5000); } ``` 在此代码中,您需要将`your_SSID`和`your_PASSWORD`替换为您的Wi-Fi网络的SSID和密码。您还需要将`your_server_address`替换为您的云服务器的地址,并将`your_php_script.php`替换为您的PHP脚本的名称。 5. 上传ESP32的代码并运行。您可以在串口监视器中查看服务器响应。 这是一个简单的例子,您可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值