返回结果:如POST资源的时候,需要返回一个资源实例;GET资源列表时,需要返回一个资源数组; 资源路径 在RESTful架构中,每个网址代表一个资源,所以网址中不能有动词,只能有名词。...例如,使用users反映用户资源的URI,而不是使用user。 例如:有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,那么它的资源路径应设计成如下样子。...animal_type_id = 1 :指定筛选条件 状态码 服务器向用户返回的状态码和提示信息,使用标准的HTTP状态码 200 OK 服务器成功返回用户请求的数据 201 CREATED 新建或修改数据成功...例如创建用户资源时需要用户名、密码,而前端只提供用户名字段,那么就要返回一个422 状态码,并返回错误信息:”密码不能为空“ 500 INTERNAL SERVER ERROR 服务器内部错误,此时服务端无法处理任何请求...DELETE/collections/identity : 返回一个204状态码和空响应体 DHC Client 用于测试API 安装DHC 谷歌浏览器插件: 名为: 基于REST的Web服务客户端
常有因为404错误页设置不当导致不存在的网页返回的不是404而导致搜索引擎降权。...200号表示网页被下载成功,而404号表示不能成功下载并产生错误。下面是HTTP状态码一览表。...但处理未完成 203——返回信息不确定或不完整 204——请求收到,但返回信息为空 205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件 206——服务器已经完成了部分用户的GET请求 3xx...======================= 一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务器超时 下面提供 HTTP 状态码的完整列表...这些错误可能是服务器本身的错误,而不是请求出错。 500(服务器内部错误)服务器遇到错误,无法完成请求。 501(尚未实施)服务器不具备完成请求的功能。
标题中涉及的核心名词API,restful 扩展 何为API呢?...何为restful呢? restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。...200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。...202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务) 204 NO CONTENT - [DELETE]:用户删除数据成功。...GET /collection:返回资源对象的列表(数组) GET /collection/resource:返回单个资源对象 POST /collection:返回新生成的资源对象 PUT /collection
若服务器拒绝对PUT、POST或者DELETE请求返回任何状态信息或表示,那么通常采用此响应代码。服务器也可以对GET请求返回此响应代码,这表明“客户端请求的资源存在,但其表示是空的”。...它与204类似,但与204不同的是,它表明客户端应重置数据源的视图或数据结构。...在这种情况下,一种选择是,服务器返回一个首选表示,并把响应代码设置为200,不过它也可以返回一个包含该资源各个表示的URI列表,并把响应代码设为300。...这个响应代码跟204(“No Content”)类似:响应实体主体都必须为空。但204用于没有主体数据的情况,而304用于有主体数据,但客户端已拥有该数据,没必要重复发送的情况。...服务器的另一个选择是:忽略客户端挑剔的要求,返回首选表示,并把响应代码设为200。 实体主体:一个可选表示的链接列表。
它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据),对资源的首部进行检查,比如: 如果 GET /users 返回用户列表, 那么 HEAD.../users 将发出相同的请求,但不会返回用户列表。...PUT 方法可能的响应 如果目标资源不存在,并且PUT方法成功创建了一份,那么源头服务器必须返回 201(Created) 来通知客户端资源已创建。...如果目标资源已经存在,并且依照请求中封装的表现形式成功进行了更新,那么,源头服务器必须返回 200 (OK) 或者 204 (No Content) 来表示请求的成功完成。...状态码 204 (No Content) 表示操作已执行,但是无进一步的相关信息。 状态码 200 (OK) 表示操作已执行,并且响应中提供了相关状态的描述信息。
, 服务器返回完整的属性 DELETE: 从服务器删除资源 3)过滤信息 通常也叫做请求参数或查询字符串。...常见状态码: 状态码 含义 说明 200 OK 操作成功, 并返回数据 201 CREATED 新建成功 204 NO CONTENT 删除成功 400 BAD REQUEST 请求语法错误 403 Forbidden...请求没有权限的资源 404 NOT FOUND 没有找到请求的资源 GET 200(OK) - 表示已在响应中发出 204(无内容) - 资源有空表示 301(Moved Permanently...通常以Json格式返回: { “error”: “错误信息”, } 6)返回结果 针对不同的操作, 服务需要返回的结果应该符合这样的规范 GET /collections – 返回资源列表(数组) GET...– 返回204状态码+空文档 实际开发中,通常会将 状态码、错误信息、返回数据,都放到返回结果中。
列表初始化对于类型转换更为严格,不允许缩窄转换(请看下面何为窄转化部分)。...这种转换可能导致截断或失真,因为目标类型的表示范围比源类型小。在 C++ 中,窄转化是一种不安全的类型转换,因为它可能导致数据丢失或意外的行为。...空列表初始化 在某些情况下,可以使用空的花括号 {} 进行初始化,这会被解释为对应类型的默认值。...return 0; } 在上述代码中,MyClass obj(); 被编译器解释为声明一个返回 MyClass 类型的函数而不是创建一个 MyClass 类型的对象。...这是因为在 C++ 中,如果声明一个函数的时候带有空括号,编译器会将其解释为一个函数声明而不是一个对象定义。
——客户必须继续发出请求 101——客户要求服务器根据请求转换HTTP协议版本 200——交易成功 201——提示知道新文件的URL 202——接受和处理、但处理未完成 203——返回信息不确定或不完整...204——请求收到,但返回信息为空 205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件 206——服务器已经完成了部分用户的GET请求 300——请求的资源可在多处得到 301——删除请求数据...例如:你一般会使用 response.setStatus(response.SC_NO_CONTENT)而不是 response.setStatus(204),因为后者不易理解而且容易导致错误。...但是,你应当注意到服务器允许对消息轻微的改变,而客户端只注意状 态码的数字值。所以服务器可能只返回 HTTP/1.1 200 而不是 HTTP/1.1 200 OK。...HTML标记自动重载的页面起作用,因为它会返回一个204状态码停止以后的重载。
什么是RESTful 一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。...以 DELETE为例,第一次DELETE返回200表示删除成功,第二次返回404提示资源不存在,这是允许的。 复杂查询 查询可以捎带以下参数: . 示例 备注 过滤条件 ?...§200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。 §201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。...状态码的完全列表参见这里 URI失效 随着系统发展,总有一些API失效或者迁移,对失效的API,返回404 not found 或 410 gone;对迁移的API,返回 301重定向。...非业务类异常 表示不在预期内的问题,通常由类库、框架抛出,或由于自己的代码逻辑错误导致,比如数据库连接失败、空指针异常、除0错误等等。 业务类异常必须提供2种信息: 1.
壹 ---- 今天的这篇文章发布于2016年01月,是介绍如何在 nginx中如何借用set指令实现 if逻辑运算功能(如 True and True),这里借助set指令实现而不是直接在if表达式中加入...所以需要"曲线救国"来完成目标任务,此外文章除set指令外还涉return指令与if指令配合使用。 贰 ---- 下面的示例要完成的目标有两个 1....if ($request_method = POST) { set $black "${black}1"; } # 条件3 "逻辑或",如任意一个条件为假设置值为0....200状态。...,可以使用下列的值: 204,400,402-406,408,410, 411, 413, 416与500-504。
为了简单起见,我将只关注控制器类而不是整个spring应用程序。 这是一个CRUD应用程序,因此控制器将有四种基本方法来支持获取,保存,更新和删除操作。所有这些操作都将适用于客户数据。...HTTP提供了一些标准方法,如GET,PUT,POST或OPTIONS等。所有这些方法都有助于设计简单的REST端点,因为这是标准的,所以每个人都可以理解它们。 GET GET方法用于访问资源。...当客户端请求无效或不存在的“id”时,我们可以使用标准HTTP响应代码,而不是使用自定义正文或错误消息进行响应。HTTP响应代码是REST中用于通知处理状态的标准方式。...请注意,此HTTP代码是一个标准代码,表示没有找到任何数据,因此客户端可以理解这一点,而不会在响应正文中提供任何额外信息。 200 - 确定:已成功处理请求。 POST 此方法用于创建新数据记录。...204 - NO CONTENT:删除后数据将不可用,因此在这种情况下204是合适的。我们也可以考虑使用200。
PUT 用于创建或替换整个资源? DELETE 仅用于删除资源?...500 - 当存在 API 使用者无法通过更改请求来解决的内部处理问题时响应 500 -responses 具有特定于应用程序的错误代码,但不是关于确切错误(堆栈跟踪或错误文本)的非常清晰的普通消息...,这可能会将内部实现暴露给 API 使用者 GET: 200 OK 和 items -array 作为空数组 GET:204 空响应,正文中没有任何内容 POST: 200 OK 更新或提交而不创建新资源...UUID 用于标识对象而不是内部 ID? 安全的直接对象引用,即 URL 中没有敏感信息(如银行帐号、社会保险号、人名等)作为资源名称或查询参数?...(一些老客户端和浏览器可能有这种限制,虽然不是官方限制,新客户端可以很好的处理)
君不见高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。...主人何为言少钱,径须沽取对君酌。 五花马、千金裘,呼儿将出换美酒,与尔同销万古愁。...君不见高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。...君不见高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。...君不见高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。
我们来了解一下 如何设计和开发一个高可用的 REST APIs 网上一直有关于"最好的Restful API的设计"争论,何为最好,至今没有一个官方的指导。...POST /users/12 HTTP/1.1X-HTTP-Method-Override: PUT 上面代码中, X-HTTP-Method-Override指定本次请求的方法是 PUT,而不是 POST...,经常会给前端人员不是很友好的 HTTP 状态码,比如 response 有 error,却给出 200HTTP.OK 的状态码 (明明吃了三碗粉,却给两碗粉的钱) HTTP/1.1 200 OKContent-Type...表示成功,同时我们可以表示的更加精确 GET:200OK 请求成功 POST:201Created 创建成功 PUT:200OK 更新成功 DELETE:204NoContent 找不到要删除的内容...这种方法叫做 HATEOAS , 举个例子,列表页数据通常会有查看操作,这样我们在返回列表页的数据的时候同样返回如何操作查看具体数据详情的 API 接口: { "status": "-1",
我们来了解一下 如何设计和开发一个高可用的 REST APIs 网上一直有关于"最好的Restful API的设计"争论,何为最好,至今没有一个官方的指导。...POST /users/12 HTTP/1.1 X-HTTP-Method-Override: PUT 上面代码中, X-HTTP-Method-Override指定本次请求的方法是 PUT,而不是 POST...,经常会给前端人员不是很友好的 HTTP 状态码,比如 response 有 error,却给出 200HTTP.OK 的状态码 (明明吃了三碗粉,却给两碗粉的钱) HTTP/1.1200 OK Content-Type...表示成功,同时我们可以表示的更加精确 GET:200OK 请求成功 POST:201Created 创建成功 PUT:200OK 更新成功 DELETE:204NoContent 找不到要删除的内容 使用状态码...这种方法叫做 HATEOAS , 举个例子,列表页数据通常会有查看操作,这样我们在返回列表页的数据的时候同样返回如何操作查看具体数据详情的 API 接口: { "status": "-1", "result
删除:{“op”: "remove", "path": "/xxx"},删除某个属性,或把它设为默认值(例如空值)。...移动:{“op”: "move", "from": "/xxx", "path": "/yyy"},把源属性的值赋值给目标属性,并把源属性删除或设成默认值。...POST api/countrycollections,成功返回 201 和集合;没创建资源则返回 404 PUT (整体更新): PUT api/countries/{id}, 成功可以返回200,204...;没找到资源则返回 404 PUT api/countries,集合操作很少见,返回 200,204或404 PATCH(局部更新): PATCH api/countries/{id},200单个数据,...204或者404 PATCH api/countries, 集合操作很少见,返回 200集合,204或404.
如果你不想用微服务全家桶,不想为了部署一个配置中心而需要看N篇教程跟几台服务器那么你可以试试AgileConfig :) RESTful Api 为了更加方便的跟业务系统集成最新版的AgileConfig...address={address} method DELETE status code 204 response content 空 应用 因为本系统登录的时候没有用户名所以basic认证的时候用户名固定使用...enabled": true, //是否启用 "inheritanced": true, //是否可以继承 "inheritancedApps": null //继承的app列表...200 request body model response content 空 配置 配置的basic认证用户名使用appId密码使用secret model { "id...值 url /api/config/{id} method DELETE status code 204 response content 空 上线配置 参数名 值 url /api/config/
apiflask.Schema classfields are represented with field classes in apiflask.fields要用特定规则验证字段,您可以传递一个验证器或一个验证器列表...版本开始,您可以使用空字典来表示空模式:@app.delete('/pets/')@app.output({}, status_code=204)def delete_pet(...使用@auth.verify_password注册一个回调函数,该函数应接受username和password,并返回相应的用户对象或None。...使用@auth.verify_token注册一个回调函数,该函数应接受令牌,并返回相应的用户对象或None。使用@app.auth_required(auth)保护视图函数。...但是,请记住从APIFlask导入HTTPBasicAuth和HTTPTokenAuth,并对视图函数使用@app.auth_required而不是@auth.login_required。
GenericAPIView GenericAPIView继承自APIView,增加了对于列表视图和详情视图可能用到的通用支持方法。通常使用时,可搭配一个或多个Mixin扩展类。...列表视图:获取多条数据(或全部数据),例如:获取所有书籍 详情视图:获取单个数据,例如:获取《西游记》的价格,作者,出版社等信息。...列表视图与详情视图通用 queryset 应用于从此视图返回对象的查询集。通常,您必须设置此属性或覆盖该get_queryset()方法。...如果您要覆盖视图方法,请务必调用get_queryset()而不是直接访问此属性。 serializer_class 应该用于验证和反序列化输入以及序列化输出的序列化器类。...,建议状态码为200;如果不返回数据,状态码根据情况可选择204或者205 return Response(serializers.data, status=200)
爬虫(Crawler),也被称为网络爬虫、网页蜘蛛或网络机器人,是一种按照既定规则在网络上自动爬取信息的程序或脚本。它模拟人类操作客户端(如浏览器或APP)向服务器发起网络请求,以抓取数据。...爬虫的工作流程: 选取目标数据源:确定要爬取的网站或网页。 发起网络请求:模拟浏览器向目标网站发送请求。 获取响应数据:接收目标网站返回的响应数据,通常是HTML、XML或JSON格式的数据。...,则要修改编码格式 ret.encoding='utf-8' 查看是否请求成功: print(ret) 返回200为成功,非200则请求失败。...) 扫描整个字符串并返回第一个成功的匹配 re.findall( ) 在字符串中找到正则表达式所匹配的所有子串, 并返回一个列表, 如果没有找到匹配的, 则返回空列表 re.split( ) 将一个字符串按照正则表达式匹配结果进行分割...find()函数 find() 方法与 find_all() 类似,但它只返回第一个匹配的标签(而不是一个列表)。如果没有找到匹配的标签,则返回 None。
领取专属 10元无门槛券
手把手带您无忧上云