故事背景 后端使用Docker Compose部署一个代码片段管理应用:snibox,某天因为云服务卡死重启之后再次访问时,登录或退出都返回422状态码。...界面提示如下: 不过奇怪的是;直接通过IP+PORT访问是没问题的,但是使用域名方式访问就会报错。 前端使用nginx作为反向代理,并配置了SSL。...proxy_set_header X-Scheme $scheme; proxy_pass http://snibox; } } 既然直接使用IP+PORT方式是可以正常访问的,但是使用域名方式确异常,问题应该出在...【参考】 https://feilong.home.blog/2018/12/22/nginx反向代理huginn部分请求422/ Nginx反向代理Huginn部分请求422 https://github.com
本文摘自 istio 学习笔记 背景 Istio 使用 Envoy 作为数据面转发 HTTP 请求,而 Envoy 默认要求使用 HTTP/1.1 或 HTTP/2,当客户端使用 HTTP/1.0 时就会返回...1.1; proxy_set_header Connection ""; ... } } 压测场景 ab 压测时会发送 HTTP/1.0 的请求,Envoy 固定返回
在我们调用 Discourse API 创建一个主题的时候,我们会从 Discourse API 的调用文档中看到返回的 thumbnails 返回为 String。...但实际上 thumbnails 的返回在目前已经是一个对象了。根据实际返回的结果,这个字段已经被设置成了一个 List。...真实的服务器返回数据: "thumbnails": [ { "max_width": null, "max_height": null, "width": 351,...net-zchub-www/discourse-uploads/original/2X/9/93f3403b595896a7dca4461134f8aa5bc74f3605.gif" }因为这样的返回改变就导致了我们程序在处理返回数据的时候提示...因此,如项目中使用了 Discourse API 的话,需要在对主题添加调用的部分把这个 API 的返回对象改一下。
看日志的时候,我发现有大量请求到了博客其实并不存在的地址,但是返回码居然是 200??...这就不正常了,于是手工访问了一下一个不存在的页面,虽然 WordPress 在前台给我展示了一个 404 页面,但是浏览器显示返回码确实是 200!!纳尼?...还以为 WordPress 更新后改了这个机制呢,把主题下的 404.php 加了一个强行的 404 返回码,发现没有任何效果。 最后发现,居然是自己以前把 404 页面静态化留下的坑!...但是,Nginx 这里我写错了,导致每次返回 404.html 都是 200 返回码!!这样其实会误导搜索引擎的判断,以为页面是存在的。。。。大坑。...修改后,重启 Nginx,然后访问不存在的地址发现已经是 404 返回码了,问题解决!
最近在安装gwasglue包时遇到了一个报错: 这是遇到了GitHub API访问次数限制的问题。大模型告诉我:1....API 限额当使用 devtools::install_github() 或 remotes::install_github() 时,R 并不是直接下载文件,而是通过GitHub提供的 API(应用程序接口...这个过程被称为 GitHub 身份验证(Authentication)。你成的 ghp_ 开头的字符叫做Personal Access Token (PAT),即“个人访问令牌”。...有了它,GitHub 知道是你本人在操作,从而把你的限额从公共的 60 提升到私有的 5000。...解决方法也很简单:在R studio中输入usethis::create_github_token(),这个步骤会让页面自动跳转至githubusethis::create_github_token()
在开发用户身份验证、账号安全等功能时,开发者调试c#手机验证码短信接口时,常因对API返回状态码理解不透彻、捕获方式不当,导致接口调用失败后无法快速定位问题——比如分不清是手机号格式错误(406)还是API...一、C#手机验证码短信接口调试的核心痛点开发者在调试c#手机验证码短信接口时,主要面临以下痛点:混淆HTTP状态码与业务状态码:将接口返回的HTTP200误认为调用成功,却忽略业务层的code=1(提交失败...);状态码解析不全面:仅处理成功(code=2)和通用失败(code=1),未覆盖405(APIID/KEY错误)、4085(验证码发送超限)等细分状态码;调试日志缺失:未记录请求参数和返回的完整状态码信息...,仅能反映网络层面的请求状态,无法代表业务是否成功;第二层:业务状态码(接口返回的code字段):由短信接口服务商定义,反映业务层面的处理结果,如2(提交成功)、405(API凭证错误)等,这是调试的核心关注对象...","your_api_password","139****8888","8866");//根据业务状态码解析问题并给出解决方案switch(response.code){case2:Console.WriteLine
问题说明: 在openstack上创建虚拟机,之前已顺利创建了n个centos6.8镜像的vm 现在用ubuntu14.04镜像创建vm,发现vm创建后的状态为ERROR!...:在一个计算节点上创建虚拟机,创建前几个虚拟机都没问题,但是再创建第n个虚拟机时就失败,报错如下: 创建云主机,状态错误,无法启动,提示NoValidHost: No valid host was found...这个问题产生的很大原因有: 1)计算节点的内存不足、CPU资源不够、硬盘空间资源不足造成的;将云主机类型规格调小点,发现就能创建成功。...2)网络配置不正确,造成创建虚拟机的时候获取ip失败;网络不通或防火墙引起。 3)openstack-nova-compute服务状态问题。...4)这个报错问题的原因很多,具体要查看/var/log/nova下的日志详细分析。
最近想把一个项目上传到github中去,但是遇到一系列问题,本来以为很快就解决了,但并非想象那样,反而耽误了我好长时间,于是记录下来。...看下图 原因分析:是因为我在github中创建项目时勾选了协议和Readme,所以本地和github不相符,因此push失败。
1.HTTP的状态码 首先复习一下所有的状态码。 1xx:属于信息性的状态码。Web API并不使用1xx的状态码。 2xx:意味着请求执行的很成功。 3xx:用于跳转。...绝大多数的Web API都不需要使用这类状态码。...当然有时候也用来表示你想要创建的资源在服务器上已经存在了。它就是用来处理并发问题的状态码。...它说明服务器已经懂得了实体的Content Type,也就是说415状态码肯定不合适;此外,实体的语法也没有问题,所以400也不合适。但是服务器仍然无法处理这个实体数据,这时就可以返回422。...服务器已经懂得了实体的Content Type的媒体类型,也就是说415状态码肯定不合适; 此外,实体的语法也没有问题,所以400也不合适。 但是服务器仍然无法处理这个实体数据,这时就可以返回422。
比如,Github 上给某个项目点赞时,故意设置一个不正确的参数命名,会返回状态码 422 422 429 Too Many Request 超过某一个 API 的 Rate Limit 规则,会被限流...,返回 429 状态码。...在调用第三方 API 服务时,比如 Github/Wechat/Fieshu 等接口,他们会指定限流规则,比如某一用户一分钟只能调用某接口100次。 对于不同的接口,有不同的限流规则。...Github 限流规则: https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting Sentry...429 状态码用以做什么 参考资料 [1] body-parser:https://github.com/expressjs/body-parser#parameterlimit [2] client_max_body_size
/models') 编写接口,create是mongoose语法,创建 // 注册 app.post('/api/register',async(req,res) =>{ const user...res.send(user) }) 然后在test.http文件测试,可以看出来返回的结果是我们填写的用户名和密码,但是这样密码暴露了,对用户信息造成安全隐私问题。...,如果正确就返回,不正确的话也是返回状态码和错误信息,最后一步就是生成token,返回客户端,客户端可以通过token判断是哪个用户。...,放心使用) assert(user, 422, '用户不存在') 这个就相当于下面这么多行代码了,简洁明了 app.post('/api/login',async(req,res) =>{...app.get('/api/profile',auth,async(req,res) =>{ res.send(req.user) }) 最终所有的代码已提交到github中,有需要的可以下载看看
在以前学习渗透的过程中遇到好多的小问题,弄得人不舒服,现在记录一下,算是加固一下, 首先是一个服务器返回请求HTTP状态码的值, 常遇到的200,400,404,401,403,500等等,(服务器常见一共...14中状态码) 2**开头的成功状态码,请求处理完成,常见的200,204,206的区别, 200请求成功,并返回了实体报文, 204页成功了,但是没有实体报文(也就是你浏览器空白的没有东西)205页和这个差不多..., 206的区别是他请求成功也给你返回了实体报文,但他这个给你返回的是你GET请求的东西。...3**开头的,意思告诉你我搬家了,不在这里,重定向状态吗, 对重定向的时间上进行了划分, 301哥们永久搬家了,至于会不会给你留新家地址,就懒返回信息有没有了, 302哥们临时出去几天,有可能还回来,也可能不回来...所以put是安全的, 无论请求多少次,都是在123上更改,而post可能请求几次创建了几次资源。幂等 5 DELETE 请求服务器删除某资源。和put都具有破坏性,可能被防火墙拦截。
HTTP 422 Unprocessable Entity 是一种 HTTP 状态码,表示服务器理解了请求的内容(通常是请求体),但由于某些语义错误,它无法处理该请求。...例如,尝试创建重复的唯一标识符(如用户名或电子邮件)或提交的数据无法与其他数据项兼容。2. ...示例假设你有一个用户注册的 API,接受的请求数据应该包括 email、username 和 password。当用户提交的数据无效时,可能会返回 422 Unprocessable Entity。...查看错误消息:服务器通常会返回具体的错误消息,客户端可以根据这些消息向用户显示更有意义的错误提示。调试 API:如果你是开发者,建议在服务器端增加详细的日志记录,以便在处理失败时能够快速定位问题。...总结HTTP 422 Unprocessable Entity 是因为请求数据语义错误导致的错误状态码。它通常出现在数据验证失败或业务规则冲突时。
线程和进程的区别(面试常问) 进程是包含线程的,而且每一个进程至少包含一个线程(主线程) 进程是系统分配资源的最小单位(基本单位),线程是操作系统调度CPU执行的最小单位(基本单位) 进程状态的改变会消耗很多资源时间...Thread的常见属性 属性 获取方法 ID getId() 名称 getName() 状态 getState() 优先级 getPriority() 是否有后台线程 isDaemon() 是否存活 isAlive...() 是否被中断 isInterrupted() ️说明: ID:是线程的唯一标识,多个线程不能重复 名称:是线程的名称 状态:表示线程所处的情况 优先级:理论来说,优先级高的线程优先被调度到...线程的状态(面试常问) ️说明: NEW:Thread对象已经创建好了,但是还没有调用start RUNNABLE:处于就绪队列中,随时可以被调度到CPU上 BLOCKED:当前线程在等待锁,...导致阻塞 WAITING:当前线程等待被唤醒,导致阻塞 TIME_WAITING:当前线程在一定时间内,处于阻塞状态(一定时间到了之后,阻塞解除),sleep,join(时间) TERMINATED
POST (创建资源): POST api/countries, 成功返回 201 和单个数据;如果资源没有创建则返回 404 POST api/countries/{id},肯定不会成功,返回 404...POST api/countrycollections,成功返回 201 和集合;没创建资源则返回 404 PUT (整体更新): PUT api/countries/{id}, 成功可以返回200,204...报告验证错误信息: 返回的状态吗应该是 422 Unprocessable Entity (上文讲过,422表示请求的格式没问题,但是语义有错误,例如实体验证错误) 除了状态码之外,还需要把验证错误信息在响应的...因为如果是500错误的话,就意味着是服务器出现了错误,而这实际上是API消费者(客户端)提交的数据有问题,是客户端的错误。所以返回的状态码应该是 4xx 系列。...这里返回状态码 422 是正确的选择,但是 422 要求请求的body的语法必须是正确的,不能是null,所以前面检查是否为null的代码还需要保留。
200 - Ok,表示请求成功; 201 - Created,请求成功并创建了资源; 204 - No Content,请求成功,但是不应该返回任何东西,例如删除操作。...当然有时候也用来表示你想要创建的资源在服务器上已经存在了。它就是用来处理并发问题的状态码。...它说明服务器已经懂得了实体的Content Type,也就是说415状态码肯定不合适;此外,实体的语法也没有问题,所以400也不合适。但是服务器仍然无法处理这个实体数据,这时就可以返回422。...错误和故障 系统时不时的会出现一些问题,这些问题可以划分为两类:错误和故障。 错误 Errors 错误通常是由API的消费者引起的。...错误并不会影响API的可用性。 故障 Faults 故障是指,针对一个合理的请求,API无法返回它的响应。 换句话说就是API引起的问题。 这些是HTTP 5xx错误。
客户端请求 API 返回的数据格式,不应该是纯文本,而应该是一个 JSON 对象,因为这样才能返回标准的结构化数据。...status=closed&sort=sortby=name&order=asc 返回码 20x 200 OK 201 Created 对创建新资源的 POST 操作进行响应。...如通过手机号码提供注册功能的 API,当用户提交的手机号已存在时,必须 返回此状态码。 410 Gone 表示当前请求的资源已永久不存在。...如在只接受 JSON 格式的 API 中放入 XML 类型的数据并向服务器发送,都 应该 返回该状态码。...如 API 设定为 60次/分钟,当用户在一分钟内请求次数超过 60 次后,都 应该 返回该状态码。
(HATEOAS) RESTful使用应该注意的问题 版本(Versioning) 参数命名规范 url命名规范 统一返回数据格式 http状态码 合理使用query parameter 多表、多参数连接查询如何设计...title=api_v2 GitHub开放平台: https://developer.github.com/v3/ Roy Fielding的原中英文论文地址如下,可以收藏下载看看,论文一般都比较晦涩难懂...4.一致的数据格式 服务端返回的数据格式要么是XML、要么是Json(获取数据),或者直接返回状态码,有兴趣的可以看看博客园的开放平台的操作数据的api,post、put、patch都是返回的一个状态码...3.RESTful使用应该注意的问题 1....POST 新增一条数据 201创建成功、422新增数据验证错误、(401、403、404、406、500) DELETE 删除一条数据 204删除成功、(401、403、404、406、500) PATCH
概念 本质:一种软件架构风格 核心:面向资源设计的API 解决问题: 降低开发的复杂性 提高系统的可伸缩性 例如:设计一套API,为多个终端服务。...状态码:当客户端发送一个请求时,服务端应当响应什么状态码 错误处理:如当发现客户端传入的参数有问题时,该返回什么样的状态信息。...animal_type_id = 1 :指定筛选条件 状态码 服务器向用户返回的状态码和提示信息,使用标准的HTTP状态码 200 OK 服务器成功返回用户请求的数据 201 CREATED 新建或修改数据成功...例如创建用户资源时需要用户名、密码,而前端只提供用户名字段,那么就要返回一个422 状态码,并返回错误信息:”密码不能为空“ 500 INTERNAL SERVER ERROR 服务器内部错误,此时服务端无法处理任何请求...DELETE/collections/identity : 返回一个204状态码和空响应体 DHC Client 用于测试API 安装DHC 谷歌浏览器插件: 名为: 基于REST的Web服务客户端
Next.js 中使用 Hono 可以按照 官方的 cli 搭建或者照 next.js 模版 https://github.com/vercel/hono-nextjs 搭建,核心代码 app/api...而是在根目录下创建名为 server 的目录,并将有关后端服务的工具库(如 db、redis、zod)放置该目录下以便调用。...下图为访问 /api/todo/xxx 的响应结果(其中 xxx 不为 cuid 格式,因此抛出数据验证异常) 所返回的响应体是完整的 zodError 内容,并且状态码为 400 提示 数据验证失败的状态码通常为...422 因为 zod-validator 默认以 json 格式返回整个 result,代码详见 https://github.com/honojs/middleware/blob/main/packages...ApiError return c.json( { code: 500, message: '出了点问题, 请稍后再试。'