网闸差点背锅 有一个服务,需要请求接口。大概流程是前台->网闸->反向代理->服务A->本地远程服务B->外部远程服务。 整个流程很长,但是很奇怪,前台返回一直是200,但返回为null。...在本地远程服务A看日志,请求没过去,那会也没怀疑服务A会存在问题。 本身服务A比较简单,就是接收前台参数,用OkHttp转发给本地远程服务B,接收本地远程服务B的返回结果处理之后就返回。...比如前端的地址(因为网闸的原因,前端地址不固定)是:172.16.10.9,那此时本地远程服务B的请求地址就是:http://172.16.10.9/xxxx 但172.16.10.9这个地址其实在服务...A是不可用的,就导致请求超时。...请求超时之后,没有处理任何请求,就直接返回的null(null来背锅!)。 后续怎么办? 把本地远程服务B的地址改为固定地址。 再试一次,果然可以了。
接口可以正常请求,状态码返回的也是我们定义的201。 在接口文档上也可以正常展示我们成功的状态码 对于http的状态码,每个数字代表不一样的含义。...100 及以上状态码用于「消息」响应。你很少直接使用它们。具有这些状态代码的响应不能带有响应体。 200 及以上状态码用于「成功」响应。这些是你最常使用的。...200 是默认状态代码,它表示一切「正常」。 另一个例子会是 201,「已创建」。它通常在数据库中创建了一条新记录后使用。 一个特殊的例子是 204,「无内容」。...此响应在没有内容返回给客户端时使用,因此该响应不能包含响应体。 300 及以上状态码用于「重定向」。具有这些状态码的响应可能有或者可能没有响应体,但 304「未修改」是个例外,该响应不得含有响应体。...500 及以上状态码用于服务器端错误。你几乎永远不会直接使用它们。当你的应用程序代码或服务器中的某些部分出现问题时,它将自动返回这些状态代码之一。
如果按照HTTP方法的语义来暴露资源,那么接口将会拥有安全性和幂等性的特性,例如GET和HEAD请求都是安全的, 无论请求多少次,都不会改变服务器状态。...PUT 不安全但幂等 用客户端管理的实例号创建一个资源 通过替换的方式更新资源 如果未被修改,则更新资源(乐观锁) 200 (OK)- 如果已存在资源被更改 201 (created)- 如果新资源被创建...DELETE 不安全但幂等 删除资源 200 (OK)- 资源已被删除 301 (Moved Permanently)- 资源的URI已更改 303 (See Other)- 其他,如负载均衡 400...RESTful应用案例--用户信息查询 本案例将采用RESTful风格的请求实现对用户信息的查询,同时返回JSON格式的数据。 其具体实现步骤如下。...JSON数据,并返回JSON格式结果 */ @RequestMapping("/testJson") @ResponseBody public User testJson(@RequestBody
使用GET的请求应该只被用于获取数据 HEAD HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体 POST POST方法用于将实体提交到指定的资原,通常导致状态或服务器上的副作用的更改 PUT...根据不同上下文,可将请求头分为: 通用头:同时适用于请求和响应消息,但与最终消息主体中传输的数据无美的消息头 请求头:包含更多有关要获取的资源或客户端本身信息的消息头。...常见的状态码是200,404,或302. 状态文本:一个简短的,纯粹的信息,通过状态码的文本描述,帮助人们理解该HTTP消息 响应头 响应头允许服务器端向客户端传递附加信息。...Upgrade标头发送的,井且指示服务器也正在切换的协议 102 Processing 此代码表示服务器已到井正在处理该请求,但没有响应可用 成功响应 状态码 描述 200 OK 请求成功 201...这通常是在PUT请求之后发送的响应 202 Accepted 请求已经接收到,但还未响应,没有结果 203 Non-authoritative Information 服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合
特点: 基于TCP/IP的高级协议 默认端口号:80 基于请求/响应模型的:一次请求对应一次响应 无状态的:每次请求之间相互独立,不能交互数据 文章目录 公共头部(General) 参数说明...: 公共头部(General) 参数说明 Request Method 页面请求的方式,如:POST/GET Status Code 请求的返回状态,如:200 OK Remote Address...url地址 常见请求方式(Request Method) GET(一般用于查询) 请求指定页面的信息,并返回实体主体。...(用于更新) HEAD(类似GET) 与GET方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。...常见的响应状态码(Status Code) 状态码都是3位数字 分类: 1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码 2xx:成功。
状态码 状态码是非常重要的,因为只有状态码会告诉API的消费者: 请求是否如预期的成功,或者失败 如果出现了错误,谁该为这个错误负责 下面再列举一下web API会用到的状态码: 200级别,表示成功:...application/json 409 - Conflict,表示该请求无法完成,因为请求与当前资源的状态有冲突,例如你编辑某个资源数据以后,该资源又被其它人更新了,这时你再PUT你的数据就会出现409...500级别,服务器错误: 500 - Internal server error,这表示是服务器发生了错误 回到刚才的那两个方法,默认情况下 JsonResult会返回200 OK状态码,可以去修改JsonResult...但是Controller里提供了一些帮助方法返回IActionResult并指定特定的状态码,针对200,就是Ok()方法。 ? 这时就不需要手动返回JsonResult了。...这个代码很简单,数据是从请求的body带进来的。 需要注意的是返回什么,如果POST操作执行成功的话,标准的做法是返回201 Created 状态码。
第三个参数是可选的,用于设置请求是否是异步的。如果设为 true (默认值),即开启异步,JavaScript就不会在此语句阻塞,使得用户能在服务器还没有响应的情况下与页面进行交互。...首先,函数要检查请求的状态。可以通过检查返回的状态码 200 OK 来判断AJAX是否成功 if (httpRequest.status === 200) { // Perfect!...HTTP响应码后, 就可以用服务器返回的数据做任何你想做的了。...,事实上服务端还是收到了来自客户端的数据了的,只是浏览器返回给用户一个CORS错误。...这里向服务器跨域发送,发现在浏览器会报错 但服务器依旧是收到了来自客户端的数据 0x04 小结 Ajax在异步处理中占据着举足轻重的地位,向在XSS中可向自己的服务器发送相关的数据等等。
PUT 不安全但幂等 用客户端管理的实例号创建一个资源 通过替换的方式更新资源 如果未被修改,则更新资源(乐观锁) 200 (OK)- 如果已存在资源被更改 201 (created)- 如果新资源被创建...DELETE 不安全但幂等 删除资源 200 (OK)- 资源已被删除 301 (Moved Permanently)- 资源的URI已更改 303 (See Other)- 其他,如负载均衡 400...资源的表述包括数据和描述数据的元数据,例如,HTTP头"Content-Type" 就是这样一个元数据属性。 那么客户端如何知道服务端提供哪种表述形式呢?...如何处理不支持的表述格式 当服务器不支持所请求的表述格式,那么应该怎么办?若服务器不支持,它应该返回一个HTTP 406响应,表示拒绝处理该请求。...2. 4 资源的链接 我们知道REST是使用标准的HTTP方法来操作资源的,但仅仅因此就理解成带CURD的Web数据库架构就太过于简单了。
PUT 不安全但幂等 用客户端管理的实例号创建一个资源 通过替换的方式更新资源 如果未被修改,则更新资源(乐观锁) 200 (OK)- 如果已存在资源被更改 201 (created)- 如果新资源被创建...DELETE 不安全但幂等 删除资源 200 (OK)- 资源已被删除 301 (Moved Permanently)- 资源的URI已更改 303 (See Other)- 其他,如负载均衡 400...资源的表述包括数据和描述数据的元数据,例如,HTTP头“Content-Type” 就是这样一个元数据属性。 那么客户端如何知道服务端提供哪种表述形式呢?...如何处理不支持的表述格式 当服务器不支持所请求的表述格式,那么应该怎么办?若服务器不支持,它应该返回一个HTTP 406响应,表示拒绝处理该请求。...2. 4 资源的链接 我 们知道REST是使用标准的HTTP方法来操作资源的,但仅仅因此就理解成带CURD的Web数据库架构就太过于简单了。
"HTTP": "http://127.0.0.1:8080/health", "Interval": "10s", "Timeout": "1s"}这个健康检查将会每隔10秒发送一个HTTP请求到...如果响应返回码不是200,或者在超时时间内没有响应,那么Consul会将该服务实例标记为不健康状态,从而触发Consul的服务发现机制。...config/app的配置项添加到Consul的KV存储中,包含了应用程序的名称、版本和数据库配置信息。...config/app的配置项在Consul中的值,返回结果如下:[ { "CreateIndex": 1234, "ModifyIndex": 1234, "LockIndex":...", "Session": null }]这个结果包含了config/app配置项的详细信息,包括其值(在Value字段中),以及其在Consul中的索引号和锁状态。
使用URL请求也会把信息暴露出来。 post请求一般是客户端提交给服务器的表单数据。当然,如果是上传文件,也应当使用post请求。post请求还可以较get请求更好的隐藏信息。...head方法与get用法相同,但没有响应实体。 URI是Uniform Resource Identifiers的缩写,它是URL的一种扩展,我们在HTTP协议中使用的URI其实都是URL。...比如上面的HTTP/1.1 200 OK,其中这个200就是服务器返回给客户端的状态码,200表示成功。HTTP协议中状态码由3位数字组成,第一位数字对状态进行了分类,有以下5类。 1XX:信息提示。...表示请求已被服务器接受,但需要继续处理,范围为100~101。 2XX:请求成功。服务器成功处理了请求。范围为200~206。 3XX:客户端重定向。...常见的一些状态码如下: 200:请求成功 404:请求资源不存在 400:请求不能被服务器解读 500:服务器内部错误 Server:服务器所使用的Web服务器名称。
使用GET的请求应该只被用于获取数据 HEAD HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体 POST POST方法用于将实体提交到指定的资源,通常导致状态或服务器上的副作用的更改 PUT...根据不同上下文,可将请求头分为: 通用头:同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息 请求头:包含更多有关要获取的资源或客户端本身信息的消息头。...HTTP/1.1 200 OK 复制代码 成功响应 状态码 描述 200 OK 请求成功 201 Created 该请求已成功,并因此创建了一个新的资源。...服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确 204 No Content 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息 205 Reset...状态码 (**status code),表明请求是成功或失败。常见的状态码是 200,404,或 302。 状态文本 (status text)。
健康检查 Consul客户端可提供任意数量的健康检查,指定一个服务(比如:webserver是否返回了200 OK 状态码)或者使用本地节点(比如:内存使用是否大于90%)....虽然Consul可以运行在一台server , 但是建议使用3到5台来避免失败情况下数据的丢失。每个数据中心建议配置一个server集群。...如果需要强一致性的状态信息,使用HTTP API向Consul服务器发送请求: dev@ubuntu ~$ curl localhost:8500/v1/catalog/nodes [ {...通过该界面我们可以查看所有的服务以及节点,查看所有的健康监测及其当前的状态,以及读取和设置键/值数据。 该界面被映射到/ui上,和HTTP API使用相同的端口。...虽然是可配置的,但默认的所有DNS名字会都在consul命名空间下.这个子域告诉Consul,我们在查询服务,NAME则是服务的名称.
什么是同步和异步 简单来说: 同步:前端发送请求后端还没有响应,这时再操作不会发送请求(上一件事没有做完下一件事就不会开始,事情一件一件做) 异步:前端发送请求后端还没有响应,依然可以执行其他操作。...== 200) {}//拿到了后端数据 onreadystatechange = ()可以监听请求状态,当xhr.readyState == 4 || xhr.status == 200的时候表示成功了...版本不支持等 200 OK 客户端请求成功,即处理成功,这是我们最想看到的状态码 302 Found 指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面 304...//请求的状态 if (xhr.readyState == 4 || xhr.status == 200) {//拿到了后端数据....then()就是个同步,上一步完成后返回res.json();res是响应对象 .then((data) => {//处理解析后的json数据 后面就是一样的提取列表,循环遍历,设置格式,将li元素添加到
基本用法 接口有需要可以到最后自取(express接口) 分派请求 只需要使用fetch()方法即可,传参为获取资源的URL。该方法返回一个Promise对象。...(使用方式和text()方法一样) 请求失败 请求失败的时候还是会正常执行then方法里的处理函数。(这里的失败是指服务器返回了响应,但是不是成功的请求。)...,这时候就不会再执行then()方法的处理函数,而是执行catch()方法的,因为这时候的Promise不再是resolved状态,而是rejected状态。...fetch方法的第二个参数就是自定义选项,通过自定义选项就能实现GET请求之外的请求。比如使用POST方法的时候,自定义选项就需要method来确定请求方法,以及body来确定请求体的数据。...: 200, data: { name: '赤蓝紫', age: 21 }, msg: '获取信息成功', }) }) // 响应状态码为400 app.get
客户端发送一个请求到一台服务器,而服务器返回一个响应。 有两种类型的请求: 绑定请求(通过UDP发送)和共享密钥请求(发送TLS (通过TCP)) 。...共享秘密请求服务器返回一个临时的用户名和密码。此用户名和密码用于在随后的绑定请求和绑定响应,身份验证和消息完整性的目的。 STUN客户和STUN服务器之间可能有一个或多个NAT 。...客户应在100ms的时间间隔仍未收到响应后开始重传请求,第二次在200ms的时间间隔仍未收到响应则开始重传,每次等待重传增加一倍的时间,直到时间间隔达到1.6秒。...这会导致服务器会从接收请求的的地址和端口发送响应返回给客户端。...如果没有响应被接收时,客户端知道它的对称的UDP防火墙后面(主机出口处没有NAT设备,但有防火墙,且防火墙规则如下:从主机UDP端口A发出的数据包保持源地址,但只有从之前该主机发出包的目的IP/PORT
处理完请求后,返回数据给nginx D -> nginx将处理结果返回给客户端 每个阶段都会有一个预设的超时时间,由于网络、机器负载、代码异常等等各种原因,如果某个阶段没有在预期的时间内正常返回,就会导致这次请求异常...,则认为这次请求超时,返回504状态码。...,即uwsgi没有返回任何数据。...比如说,client一直在发起请求,客户端因为某些原因处理慢了,没有在规定时间内返回数据,client认为请求失败,中断这次请求,然后再重新发起请求。...203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。 204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
,则认为这次请求超时,返回504状态码。...,即uwsgi没有返回任何数据。...比如说,client一直在发起请求,客户端因为某些原因处理慢了,没有在规定时间内返回数据,client认为请求失败,中断这次请求,然后再重新发起请求。...由于在nginx配置中,设置了limit_req的流量限制,导致许多请求返回503错误代码,在限流的条件下,为提高用户体验,希望返回正常Code 200,且返回操作频繁的信息: ...............203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。 204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
搭论坛的时候,一开始想用discourse,但配置总有问题,就先放弃了,找了个nodebb看起来也还可以。...但nodebb是使用ngnix做代理的,考虑之后决定放弃apache,全部统一用ngnix。...200状态码, 但实际输出给浏览器的页面内容却是空白。...简而言之,原因是nginx无法正确的将 *.php 文件的地址传递给php-fpm去解析, 相当于php-fpm接受到了请求,但这请求却指向一个不存在的文件,于是返回空结果。...数据库选redis,其他都不改(是的就是127.0.0.1 就是0号数据库) 或者为了安全,也可以查一下,加个密码,我查了但懒得弄。 安装完成后,启动就行了 .
创建一个控制器和视图 要在 Rails 中显示“My first test” 的静态页面,需要新建一个控制器和视图 控制器用来接受向程序发起的请求 视图的作用是,以人类能看懂的格式显示数据 [root@... Find me in app/views/welcome/index.html.erb [root@h202 blog]# ---- 设置首页 路由决定哪个控制器会接受到这个请求...do get 'welcome/index' root 'welcome#index' end [root@h202 blog]# ---- 进行访问 直接刷新页面 注意,我修改了配置和服务,但并没有对服务进行重启...,而可以直接加载出新的内容,说明 Rails 可以进行动态加载 In development mode, Rails does not generally require you to restart...WelcomeController#index as HTML Rendered welcome/index.html.erb within layouts/application (0.1ms) Completed 200
领取专属 10元无门槛券
手把手带您无忧上云