Spring Boot教程(25) – 状态码和错误码的一种最佳实践

前两天在V2EX上看到一个帖子,有人吐槽公司项目所有的接口请求都返回200状态码,再在body里加入code进行业务区分的做法不合理,帖子引起了程序员们激烈的讨论。左耳朵耗子(陈皓)之前也发微博讨论过这个问题,不同意见的两方人数都挺多的,各有各的道理。

“200一把梭”的人会采用类似如下的JSON响应:

{ 
   "code":123,
   "message":"OK",
   "data":{ ... }
}

即所有的请求状态码都是200,业务根据body中的code字段判断请求的状态,需要时会从data字段中拿出数据。这种方式的使用者,大概理由是,业务的状态码足够多,如果对应成HTTP状态码根本不够用。

而另一堆人对于这种做法十分反对,认为这相当于抛弃了HTTP协议的状态码,抛弃了普遍认可的共识。

(更多…)

继续阅读 →

使用frp将服务器请求转发到本地

如果你对接过国内的一些开放平台,比如微信(公众号、小程序)、支付宝什么的,你会发现在开发阶段就需要一个公网地址来提供API或者接收回调,你总不能搞个服务器,开发一点,部署一点吧。今天我们介绍一个方法,将服务器的请求,转发到你的开发机上,这样不管是修改代码、查看日志还是跟踪调试,都会很方便。

(更多…)

继续阅读 →

HTTP协议漫谈:概述

自从学习linux编程以来,一直对与服务器的工作原理十分感兴趣,想写一个,然而暑假由于各种原因耽搁了下来,前几天是课程设计,大概两周时间,我就趁这个时间,简单实现了一下。又恰逢《HTTP权威指南》出版,入手了一本,大概翻了一遍,对于HTTP的细节了解了很多,收获还是很大的。我简单总结一下,巩固知识&&方便以后查看。

HTTP,超文本传输协议,是使用非常广泛的网络协议,我们平时上网看新闻,刷微博都要依靠下面的http协议来传递信息。要传递信息,首先需要客户端发起连接,客户端和服务器建立链接之后,发送HTTP请求报文,服务器接受请求之后返回给客户端一个响应报文。请求和响应都是固定文本格式的,在协议中有明确的定义,之后会详解。HTTP底层是通过TCP进行通讯的,不过我们不必关心TCP的具体细节,只需要知道他提供可靠连接,并且在请求和响应完成后关闭连接(持久链接中有多次请求和响应)。

HTTP的请求可以有好几种,最常见的是GET请求(还有POST,HEAD等),他会向服务器请求资源(即“get”资源),同时会给一个资源的地址,这些东西放在请求报文的开头第一行,我们把这一行称为起始行。

GET /index.html HTTP/1.1\r\n

(更多…)

继续阅读 →