用人话翻译一下就是:客户端(比如浏览器、APP)在请求时,通过Accept头告诉服务器:“我只看得懂这些格式哦(比如 application/json、text/html)”服务器处理完请求后,想返回数据...代码证据:// 前端请求(错误示例)fetch('/api/order', { headers: { 'Accept': 'application/xml' // 只接受XML }})// 后端接口.../xml,两者不匹配,直接触发 406隐藏陷阱:就算客户端设置Accept: */*(表示接受所有格式),也可能报错!...比如,StringHttpMessageConverter排在MappingJackson2HttpMessageConverter前面,当返回String类型时,它会优先处理,但如果客户端要的是 JSON...如果接口返回null,而此时没有能处理null的转换器,就会触发 406。场景还原:后端接口查询订单,没找到数据时返回null,而客户端请求头是Accept: application/json。
当客户端请求到达第一个代理服务器时,该服务器会在自己发出的请求里面 添加 Via 头部,并填上自己的相关信息当下一个代理服务器收到第一个代理服务器的请求时,会在自己发出的请求里面复制前一个代理服务器的请求的...Via头部,并把自己的相关信息加到后面,以此类推,当 OCS 收到最后一个代理服务器的请求时,检查 Via 头部,就知道该请求所经过的路由。...,"message":"HTTP 406 Not Acceptable"},长度刚好为48 3、Response Headers 名称 作用 Accept-Ranges 是否接受字节范围请求;WEB服务器表明自己是否接受获取其某个实体的一部分...比如前一次请求某个 html 文件时,获得了其 ETag,当这次又请求这个文件时,浏览器就会把先前获得的 ETag 值发送给 WEB 服务器,然后 WEB 服务器会把这个 ETag 跟该文件的当前 ETag...例如:Vary:Accept-Encoding WWW-Authenticate 定义了使用何种验证方式去获取对资源的连接; X-XSS-Protection 当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面
206部分内容 当Range从客户端发送标头以仅请求资源的一部分时使用它。 207 多状态 (WebDAV) 向客户端指示发生了多个操作,并且每个操作的状态都可以在响应的正文中找到。...此响应仅在由Cache-ControlorExpires标头字段指示时才可缓存。 303 查看其他 响应可以在不同的 URI 下找到,并且应该在该资源上使用 GET 方法检索。...406 不可接受 Accept服务器在请求中发送的标头中找不到任何符合用户代理给出的标准的内容。 407 需要代理身份验证 表示客户端必须首先通过代理验证自己。...(RFC 2324) 420增强你的冷静(推特) 当客户端受到速率限制时,由 Twitter 搜索和趋势 API 返回。...451 因法律原因不可用 用户代理请求的资源无法合法提供。 499 客户端关闭请求(Nginx) 当 HTTP 服务器正在处理其请求时,客户端关闭了连接,使服务器无法发回 HTTP 标头。
不需要使用此响应代码,并且仅当响应为200(确定)时才适用。 诠释: 仍旧适用在代理服务器, 它在获取到原始内容后, 原始服务器给他响应了200, 然后代理服务器对内容进行了修改....当且仅当第二个请求中使用的方法是GET或HEAD时,才可以由用户代理执行所需的操作,而无需与用户进行交互。客户端应该检测到无限重定向循环,因为这样的循环会为每个重定向生成网络流量。...仅当由Cache-Control或Expires标头字段指示时,此响应才可缓存。 临时URI应该由响应中的Location字段给出。...仅当由Cache-Control或Expires标头字段指示时,此响应才可缓存。 临时URI应该由响应中的Location字段给出。...---- 406 Not Acceptable (不可接受) 由请求标识的资源仅能够生成响应实体,该响应实体具有根据请求中发送的接受标头不可接受的内容特征。
因此响应都应隐式或显式的定义为可缓存的,若不可缓存则要避免客户端在多次请求后用旧数据或脏数据来响应。管理得当的缓存会部分地或完全地除去客户端和服务端之间的交互,进一步改善性能和延展性。...获取今天登陆的用户、登陆时间降序排列 3. url命名规范 API 命名应该采用约定俗成的方式,保持简洁明了, 在RESTful架构中,每个url代表一种资源所以url中不能有动词,只能有名词,并且名词中也应该使用复数...当状态值为”fail”或”error”时,data仅包含错误原因或异常名称、或者null也是可以的 返回成功的响应json格式 { "code": 200, "message": "success...HTTP Method 详细解释 返回状态码 GET 获取对象或集合 200成功、401没有授权、403访问禁止、404没有资源、参数错误、406请求格式不正确、410资源被删除、500服务器内部错误...合理使用query parameter 在请求数据时,客户端经常会对数据进行过滤和分页等要求,而这些参数推荐采用HTTP Query Parameter的方式实现 比如设计一个最近登陆的所有用户 https
403.7 禁止:需要用户证书 当试图访问的资源要求浏览器具有服务器可识别的用户安全套接字层(SSL)证书时就会导致此问题。可用来验证您是否为此资源的合法用户。...HTTP 错误 406 406 不可接受 根据此请求中所发送的“接受”标题,此请求所标识的资源只能生成内容特征为“不可接受”的响应实体。 如果问题依然存在,请与服务器的管理员联系。...403.7 禁止:需要用户证书 当试图访问的资源要求浏览器具有服务器可识别的用户安全套接字层(SSL)证书时就会导致此问题。可用来验证您是否为此资源的合法用户。...HTTP 错误 406 406 不可接受 根据此请求中所发送的“接受”标题,此请求所标识的资源只能生成内容特征为“不可接受”的响应实体。 如果问题依然存在,请与服务器的管理员联系。...HTTP 错误 406 406 不可接受 根据此请求中所发送的“接受”标题,此请求所标识的资源只能生成内容特征为“不可接受”的响应实体。 如果问题依然存在,请与服务器的管理员联系。
405/406等错误码。...无异常重试机制:网络波动、接口临时不可用等偶发问题会导致请求失败,无重试逻辑则直接丢失通知请求。异常处理不全面:仅处理200响应,未对400/405/408等状态码做针对性处理,问题定位效率低。...3.1基础请求代码实现首先编写基础的请求代码,包含动态密码生成、参数拼接、请求发送,同时标注关键参数的获取方式:展开代码语言:PHPAI代码解释获取;code=406...在实际项目中,除了本文的重试逻辑,还可结合监控告警机制,当接口调用失败率超过阈值时及时通知开发人员;同时需关注接口提供商的限流策略,合理规划调用频率。
之前正常的一个接口突然由api网关返回了406的错误,看了下日志发现服务端报了500错误,为什么某个应用端报的500异常到了api网关却返回了406错误,百思不得其解,最终发现406并不是API网关返回的错误...在讲述具体原因之前,先介绍下406这个错误, 406错误表明服务器端返回的数据客户端无法处理,客户端发送请求时会在http请求头里面加上一些必要的字段比如: 跟406状态有关的是下面这几个请求头属性...,deflate等 Accept-Language: 客户端接口的语言,比如Engligh、German等 Accept-Ranges: 分段传输时使用 AbstractMessageConverterMethodProcessor...text/html的HttpMessageConverter,所以返回到客户端成了406,而不是500,但是为什么不抛出异常时该controller没有任何问题呢?...问题就出在不出问题之前,比如注释掉//a.toString(),这时返回的是字符串类型,但是当抛出异常时返回的类型却是map类型的,再加上 produces="text/html; charset=UTF
;生产阶段:需使用在运营商备案通过的自定义模板ID,需在接口请求中准确填写,否则会触发4072错误(内容与模板不匹配);注意事项:当使用完整内容方式发送短信时,模板ID可为空;使用模板变量方式时,模板ID...需严格遵循以下规则:签名必须用【】包裹,如【XX科技】,缺少符号会触发4070错误码;签名需与在平台备案的签名完全一致,包括字符、格式,否则触发4075错误(签名未通过审核);签名需包含在短信内容的开头或结尾,且不可包含...3.2完整接口调用代码实现以下是基于Python的APP验证码短信接口调用示例,包含完整的参数配置、请求发送及响应解析,注释中明确了注册链接(用于获取account/password):python运行展开代码语言...IPcb1Yaccount="xxxxxxxx"#替换为实际从平台获取的APIIDpassword="xxxxxxxx"#替换为实际从平台获取的APIKEYtemplateid="1"#调试阶段使用系统默认模板...IDcontent=code#模板变量方式,仅传递验证码变量值#APP验证码短信接口的请求地址url="https://api.ihuyi.com/sms/Submit.json"#请求头配置,严格遵循接口要求的固定值
RESTful API设计指南 #1 环境 Python3.7.3 djangorestframework==3.8.2 #2 动词 methods url 说明 GET /zoos 列出所有动物园(列表...) GET /zoos/id/ 获取某个指定动物园的信息(详细信息) POST /zoos 新建一个动物园 PUT /zoos/id/ 更新某个指定动物园的信息 DELETE /zoos/id/ 删除某个指定动物园...401 Unauthorized [*] 表示用户没有权限(令牌、用户名、密码错误),未登录时,访问需要登录的页面。...406 Not Acceptable [GET] 用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。 410 Gone [GET] 用户请求的资源被永久删除,且不会再得到的。...422 Unprocesable entity [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
现在,当谈论起 RESTful Web API 的时候,人们总会想到 JSON。...而这就是HTTP请求和响应的核心内容之一: Content Negotiation 内容协商 内容协商是这样一个过程:针对一个响应,当有多种表述格式可用的时候,选取最佳的一个表述。...当我们的RESTful API只面向一个API消费者的时候,也许只使用 JSON 一种格式是没有什么问题的。...如果请求里填写的是 application/json,那么RESTful API返回响应的表述格式就应该是 json… 而如果请求没有填写 Accept Header,那么 RESTful API 只好使用它的默认格式进行响应了...) 状态码,表示 API消费者请求的媒体类型是不可接受的,无法将其作为响应的格式。
✅请求方式:同时支持POST/GET,生产环境优先使用POST(参数更安全、无长度限制)✅编码要求:全局强制UTF-8,包括请求参数、代码文件、响应解析全链路,杜绝乱码问题✅请求头必配:Content-Type...】-【产品总览】获取,需妥善保管✅运行特性:7×24小时无间断服务,支持全球号码发送,无时区、地域限制二、核心参数深度解析(开发必核对)接口参数设计精简且规范,区分必填参数与可选参数,无冗余字段,以下结合开发场景标注每个参数的使用规则...、格式要求、易错点,附完整参数对照表,开发时可直接对照使用:✅必传参数(缺一不可,缺失直接返回对应错误码)参数名类型取值说明&开发注意事项错误码关联accountstring平台分配的APIID,纯字符组合...(密码不能为空)、405(账号密码错误)mobilestring格式强要求:国家号+空格+手机号,例:美国19782345x3、香港852845600x0,仅支持单号码提交403(手机号为空)、406(...:成功时返回唯一流水号,用于对账、问题追溯,失败时为0/空三、多语言完整代码实现(可直接CV复用)以下提供Java、Python、PHP三大主流语言的完整可运行代码,包含「静态密码模式(快速调试)、动态密码模式
当且仅当后续的请求所使用的方法是 GET 或者 HEAD 时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。...服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。 302 Move Temporarily(临时移动) ? 请求的资源临时从不同的 URI 响应请求。...305 Use Proxy(使用代理) ? 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。 307 Temporary Redirect(临时重定向) ?...请求中的方法不被允许(HTTP METHOD)。 406 Not Acceptable(不接受) ? 请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体,该请求不可接受。...408 Request Timeout(请求超时) ? 服务器等候请求时发生超时。 409 Conflict(冲突) ? 由于和被请求的资源的当前状态之间存在冲突,请求无法完成。
无法找到请求的位置。", "status.405": "方法不被允许。使用该位置不支持的请求方法进行了请求。", "status.406": "不可接受。...服务器只生成客户端不接受的响应。", "status.407": "需要代理身份验证。客户端必须先使用代理对自身进行身份验证。"...服务器不识别该请求方法,或者服务器没有能力完成请求。", "status.503": "服务不可用。服务器当前不可用(过载或故障)。"...environment.self : environment.api) + url.url; //当我们才用这种方式来传headers的信息的时候下面的get,post等方法可以不写...http时,会找写的这个服务。
在开发用户身份验证、账号安全等功能时,开发者调试c#手机验证码短信接口时,常因对API返回状态码理解不透彻、捕获方式不当,导致接口调用失败后无法快速定位问题——比如分不清是手机号格式错误(406)还是API...);状态码解析不全面:仅处理成功(code=2)和通用失败(code=1),未覆盖405(APIID/KEY错误)、4085(验证码发送超限)等细分状态码;调试日志缺失:未记录请求参数和返回的完整状态码信息...二、API状态码的底层逻辑与分类2.1状态码的层级划分调试c#手机验证码短信接口时,需区分两类状态码,这是正确解析的基础:第一层:HTTP状态码(如200、400、500):表示请求是否到达接口服务器并被接收...,仅能反映网络层面的请求状态,无法代表业务是否成功;第二层:业务状态码(接口返回的code字段):由短信接口服务商定义,反映业务层面的处理结果,如2(提交成功)、405(API凭证错误)等,这是调试的核心关注对象...3.1搭建基础调试环境与请求代码以下是基于HttpClient的基础调试代码,包含请求发送和状态码捕获,其中注册链接作为获取API凭证的入口嵌入代码注释:csharp运行展开代码语言:TXTAI代码解释
id=100 2)HTTP动词(请求方式) 对于资源, 一般有4个操作, CURD(增/删/改/查) GET: 从服务器获取资源(一项或多项) POST: 在服务器新建一个资源 PUT: 在服务器更新资源...)- 已接受处理请求但尚未完成(异步处理) 301(Moved Permanently)- 资源的URI被更新 303(See Other)- 其他(如,负载均衡) 400(bad request...Failed)- 前置条件失败(如执行条件更新时的冲突) 415 (unsupported media type)- 接受到的表示不受支持 500 (internal server error)-...)- 资源不存在 406 (not acceptable)- 服务端不支持所需表示 409 (conflict)- 通用冲突 412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突...RESTFul 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。
只有在有利的情况下,才应该切换协议。举个栗子,切换到较新版本的HTTP比旧版本更有利,并且在传递使用这些特征的资源时切换到实时、同步协议可能是更有利的。...当且仅当第二次请求是GET或HEAD请求时,所需的动作可以仅由用户代理来执行而不与用户交互。客户端应该检测无限重定向循环,因为这样的循环会使每个重定向都生成网络流量。...当需要与此类客户端进行交互性操作时,可以使用302状态码,因为大多数的用户代理对302状态的响应就像这里所描述的303一样。...10.4.7 406 无法接受(Not Acceptable) 请求所标识的资源仅能够根据请求中发送的接收头字段生成具有不可接受的内容特征的响应实体。 ...Note: 服务器允许根据请求中发送的请求头返回不可接受的响应。在某些情况下,这甚至可能比发送406响应更好。我们鼓励用户代理检查传入响应的报头,以确定是否可以接受。
使用工具(如Postman)验证请求格式。 对URL特殊字符进行编码(如encodeURIComponent)。 2.2 404 Not Found 含义:请求的资源不存在。...确认后端路由是否正确定义(如Express.js): app.get('/api/user', (req, res) => { ... }); // 确保路由匹配 2.3 406 Not Acceptable...示例代码(错误请求头): GET /api/data HTTP/1.1 Accept: application/xml # 服务器仅支持JSON 解决方法: 修改Accept请求头: Accept:...使用开发者工具(如Chrome Network面板)查看原始请求。 服务端问题(5xx): 查看服务器日志(如Nginx的error_log)。...下次遇到问题时,不妨对照排查,或许能事半功倍!
当 API 代码更新之后,API 文档自动刷新; API 协作工具通过脚本进行自动刷新/同步; 基于 API 文档智能生成请求代码和业务代码; 当然在正式开始对接 Eolink 前,咱需要先使用 Python...三、Eolink 通过 Open API 触发同步操作 本篇博客中使用的是 Open API V2 版本,在正式编写代码前,需要先在 工作空间 管理后台获取调用密钥。...API 文档同步到 Eolink,一切才刚刚开始! 选择进入前文同步的任意接口中,可以得到该接口的详细描述,更多内容可在你的 Eolink 后台 查看,这里仅展示局部。...这个操作非常适合测试工程师进行数据模拟,尤其是当 API 接口包含大量参数待填写时,可以大幅度节约手写参数的消耗时间,而且测试的时候,可以避免使用 abc,aaa,1111,123,这些 “左手乱敲”...数据同步方式:增量更新、全量更新、仅添加新 API 时更新; 同步接口唯一标识:可选 接口标识,接口地址和请求方式,接口名称; 新生成 API 文档状态设置:已发布,设计,待定,开发,测试等; 将发生变更的