首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RESTful架构详解 转

接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。...如 果按照HTTP方法的语义来暴露资源,那么接口将会拥有安全性和幂等性的特性,例如GET和HEAD请求都是安全的, 无论请求多少次,都不会改变服务器状态。...例如,下面是一些不符合统一接口要求的URI: GET /getUser/1 POST /createUser PUT /updateUser/1 DELETE /deleteUser/1 如果GET请求增加计数器...直接忽视缓存可取吗? 即 使你按各个动词的原本意图来使用它们,你仍可以轻易禁止缓存机制。 最简单的做法就是在你的HTTP响应里增加这样一个报头: Cache-control: no-cache。...当然,如果Cookie保存的是一些服务器不依赖于会话状态即可验证的信息(比如认证令牌),这样的Cookie也是符合REST原则的。

84731

RESTful 架构详解

接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。...如果按照HTTP方法的语义来暴露资源,那么接口将会拥有安全性和幂等性的特性,例如GET和HEAD请求都是安全的, 无论请求多少次,都不会改变服务器状态。...例如,下面是一些不符合统一接口要求的URI: GET /getUser/1 POST /createUser PUT /updateUser/1 DELETE /deleteUser/1 如果GET请求增加计数器...直接忽视缓存可取吗? 即使你按各个动词的原本意图来使用它们,你仍可以轻易禁止缓存机制。 最简单的做法就是在你的HTTP响应里增加这样一个报头: Cache-control: no-cache。...当然,如果Cookie保存的是一些服务器不依赖于会话状态即可验证的信息(比如认证令牌),这样的Cookie也是符合REST原则的。

98320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Asp.net web api 知多少

    客户端初始化请求到服务器,服务器负责处理请求并返回响应。 这些请求和响应都是围绕这些资源的表示形式进行传递。 Q2. 解释下REST原则? Ans....GET用来获取资源的某种表现形式,POST用来传递资源到服务器以至于底层资源能够被改变。Representation可以有很多种表现形式,比如XML、Json等。...任何会话类型的数据应该在客户端保存和处理,只有在每次请求中按需传递到服务器。 Cacheable(可缓存) - 客户端应该能够缓存响应以供后续使用。 Q3. REST和 SOAP间的区别是什么?...WEB API还负责返回特定格式的数据,如JSON,XML或任何其他基于接受请求头中定义的格式;但MVC只能通过JsonResult返回Json格式数据。...可以如同ASP.NET MVC那样修改WEB API的action name吗? Ans.

    4.8K50

    REST API 设计最佳实践:如何构建、设计和使用 API ?

    , 4xx 表示客户端错误 和5xx 表示服务器错误 当然你还可以使用其他 HTTP 协议提供给 REST API 设计的功能 ,但这些都必须牢记在心里。...但是,现在不再清楚您请求的是哪种类型的资源。 是作者吗?还是书籍?...而且扁平化总比嵌套好,所以肯定有更好的方法... 确实如此!...我所使用的端点看起来像这样: POST: /buckets 当时我非常生气,怎么也想不明白究竟哪里出了问题。最后,原来是因为缺少了尾随斜杠导致服务器出错!...现在问题来了:如何将这样的功能融入REST API? 我的答案是:使用查询字符串(querystring)。 我认为使用查询字符串实现分页非常明显。它看起来像这样: GET: /books?...因此最后, 用户可以像这样获取“包含20个项目、已发布书籍第二页”: GET: /books?published=true&page=2&page_size=10 美观且清晰易懂,不是吗? 11.

    45240

    REST vs RPC - RESTful究竟是什么?

    最常见的误解之一,使用HTTP动词(如GET,PUT,POST),而不是使用SOAP绑定网站前端服务器的任何设计框架都称为“RESTful”。...) REST vs RPC REST不是像WCF这样的框架,HTTP这样的协议,JAX-RS这样的框架,SOAP这样的通信格式。...REST的核心原则是解决这些方面的问题,可以被建模成被客户端消费理解的返回对象。 这种面向资源的思想,而不是客户端和服务器之间通信的实现细节,实际上就是REST的全部内容。...返回的状态码是手工编码的,也是你定义的一部分。 -相反,REST API将问题域中的各种实体建模为资源,并使用HTTP谓词来表示针对这些资源的事务 -  POST创建,PUT更新和GET读取。...:资源对象要被描述 使用或采取行动----同一个url的get,put,del,post请求返回的对象一致 不是客户端和服务器之间通信的实现细节---不需要RPC那样返回操作结果 3.RESTful

    1.4K50

    MockServer工具-Moco

    4.Mock参数配置:Moco可以将需要返回的具体结果写在Json文件中;YApi可以通过mockjs、json-schema进行数据Mock,扩展性更好,但指定返回结果成本较高。...Moco可以提供以下服务: HTTP APIs Socket APIs REST API Moco原理简介 Moco会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口)。...Moco的底层没有依赖于像Servlet这样的重型框架,而是基于一个叫Netty网络应用框架直接编写的,这样一来,绕过了复杂的应用服务器,所以,它的速度是极快的。...[ { "description": "request必须是get请求,才能匹配此接口,除此外还支持post|put|delete|Head方法", "request":{...所以是否选用Moco,就取决于开发者是否只是需要一个简单的模拟服务器。

    1.2K30

    赏心悦目的RESTful API这样来设计!

    ,但是不能快速从接口 URL 的定义中明确该接口的含义,需要进一步读代码确认 URL中的英文单词使用五花八门,搜索某个接口不知道具体的关键字 请求方法动词如 POST GET 随意使用 完成当前业务接口对接...服务器必须接受 POST模拟其他三个方法( PUT、 PATCH、 DELETE)。...这时,客户端发出的 HTTP 请求,要加上 X-HTTP-Method-Override属性,告诉服务器应该使用哪一个动词,覆盖 POST方法。...同时客户端也应作出相应的配合,客户端请求时,也要明确告诉服务器,可以接受 JSON 格式,即请求的 HTTP 头的 ACCEPT属性也要设成 application/json,多渠道调用可能会存在相同资源需要有不同的...这样的话,用户只要记住一个 URL,就可以发现其他的 URL。

    1.4K10

    前后端分离开发,RESTful 接口如何设计

    客户端在需要时发出 GET 请求获取指定资源。客户端可以在本地缓存请求结果,服务器可以在远程缓存结果,系统的中间层可以在请求链路中间缓存结果。这是一个与具体应用程序无关的特性,可以加入系统设计中。...接下来,当一切就绪时,使用基于超媒体的 MIME 类型,这样就可以充分享受 REST 的好处了。 4. 动词 动词是用来与服务器资源交互的方法或操作。...正如之前提到的那样,只要服务器支持,客户端可以通过内容协商提前指定请求的返回格式。 GET 请求关键点之一,不要修改服务器端的任何内容。...data=1234 不要这样做! 由于 GET 请求安全性允许缓存请求,这会让正在构建的 RESTful 系统陷入混乱。GET 请求也意味着幂等性,即多次请求不会对系统产生任何影响。...在新增雇员、下订单或提交表单的时候,我们无法预测服务器将如何命名正在创建的资源。这就是为什么将资源提交给类似 Servlet 这样的程序处理。接下来,服务器会接受请求、校验请求、验证用户凭据等。

    2.5K01

    如何设计好的RESTful API

    ,但是不能快速从接口 URL 的定义中明确该接口的含义,需要进一步读代码确认 URL中的英文单词使用五花八门,搜索某个接口不知道具体的关键字 请求方法动词如 POST GET 随意使用 完成当前业务接口对接...服务器必须接受 POST模拟其他三个方法( PUT、 PATCH、 DELETE)。...这时,客户端发出的 HTTP 请求,要加上 X-HTTP-Method-Override属性,告诉服务器应该使用哪一个动词,覆盖 POST方法。...同时客户端也应作出相应的配合,客户端请求时,也要明确告诉服务器,可以接受 JSON 格式,即请求的 HTTP 头的 ACCEPT属性也要设成 application/json,多渠道调用可能会存在相同资源需要有不同的...GET:200OK 请求成功 POST:201Created 创建成功 PUT:200OK 更新成功 DELETE:204NoContent 找不到要删除的内容 使用状态码 202 有时候会比 使用状态啊吗

    1.7K20

    《Elasticsearch 源码解析与优化实战》第15章:Transport模块分析

    例如,当一个节点处理HTTP GET请求时,实际上是由持有该数据的另一个节点处理的,这就需要处理HTTP GET请求的节点将请求通过传输模块转发给另一个节点。...http.port 用于接受HTTP请求的绑定端口。接受单个值或范围。如果指定了一个范围,则该节点将绑定到该范围内的第一个可用端口。默认为9200~9300。...如果为network.host设置多个地址,但在节点到节点的通信中依赖于特定的地址,那么应该显式地设network.publish_host。 以上两个配置都可以像network.host一样配置。...HTTP模块负责服务用户的REST请求。 网络层 网络层是对内部各种传输模块的抽象,使得上层发送/接收数据时不必关心底层的实现,使用Netty 还是其他类库,上层并不关心。...REST解析和处理 对REST请求的处理就是定义某个URI应该由哪个模块处理。在ES中, REST请求和RPC请求都称为Action,对REST请求执行处理的类命名规则为Rest* Action。

    1.5K31

    RESTful源码学习笔记之RPC和Restful深入理解

    2、寻址问题 : A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称是什么,这样才能完成调用。...REST通过HTTP协议定义的通用动词方法(GET、PUT、DELETE、POST) ,以URI对网络资源进行唯一标识,响应端根据请求端的不同需求,通过无状态通信,对其请求的资源进行表述。    ...://127.0.0.1/user PUT 修改用户信息  http://127.0.0.1/user DELETE 删除用户信息 RESTful风格的体现,在你使用了get请求,就是查询;使用post...这样做就完全没有必要对crud做具体的描述。 满足REST约束条件和原则的架构,就被称为是RESTful架构。...以Spring Cloud为代表所支持的Restful 协议,优势在于能够穿透防火墙,使用方便,语言无关,基本上可以使用各种开发语言实现的系统,都可以接受Restful 的请求。

    70530

    你确定你的 REST API 真的符合 REST 规范?

    OpenAPI 规范 OpenAPI 是目前最广泛接受的 REST API 规范格式。...最好不是为单独的类、模型或控制器编写单元测试,而是为特定的 API 编写单元测试。在每个测试中,模拟一个真实的 HTTP 请求并验证服务器的响应。...3.模型序列化 几乎所有现代服务器框架都以这样或那样的方式使用对象关系映射(ORM)。这意味着 API 使用的大部分资源是由模型及其实例和集合表示的。...强制转换查询字符串类型 如果你的 API 由于某种原因使用 application/x-www-form-urlencoded MIME类型而不是 application/json 来处理请求,请求体将看起来像这样...例如,POST 和PATCH 请求中可用的字段列表必须严格限制,PATCH 通常将所有字段标记为可选。描述响应的模型可以更加自由。

    29320

    REST API 最佳实践

    在 Web 开发中,REST API 在确保客户端和服务器之间的顺利通信方面发挥了重要作用。 你可以把客户端看作是前端,把服务器看作是后端。...如果你有一个像 https://mysite.com/post/123 这样的端点,用 DELETE 请求删除一个帖子,或用 PUT 或 PATCH 请求更新一个帖子,可能是可以的,但它没有告诉用户在这个集合中可能还有一些其他的帖子...使用五种 HTTP 方法 POST,GET,PUT/PATCH,DELETE 可以提供 CRUD 功能(创建,获取,更新,删除)。 除了 POST 其他请求都具备幂等性(多次请求的效果相同)。...需要注意的是 POST 和 PUT 最大的区别就是幂等性,所以 PUT 也可以用于创建操作,只要在创建前就可以确定资源的 ID。 获取:使用 GET 方法获取资源。GET 请求从不改变资源的状态。...如果发生这种情况,从这样的数据库中检索数据可能非常缓慢。 过滤、排序和分页都是可以在 REST API 的集合上执行的操作。这样只能检索、排序和排列必要的数据,并将其分页,以防服务器请求过载。

    1.7K20

    RESTful 架构基础

    客户端在需要时发出 GET 请求获取指定资源。客户端可以在本地缓存请求结果,服务器可以在远程缓存结果,系统的中间层可以在请求链路中间缓存结果。这是一个与具体应用程序无关的特性,可以加入系统设计中。...接下来,当一切就绪时,使用基于超媒体的 MIME 类型,这样就可以充分享受 REST 的好处了。 4. 动词 动词是用来与服务器资源交互的方法或操作。...正如之前提到的那样,只要服务器支持,客户端可以通过内容协商提前指定请求的返回格式。 GET 请求关键点之一,不要修改服务器端的任何内容。...根据定义,二者似乎都可以被客户端用来创建或更新服务器资源,然而它们的用途各有不同。 当无法预测请求创建的资源的标识时,客户端会使用 POST 请求。...在新增雇员、下订单或提交表单的时候,我们无法预测服务器将如何命名正在创建的资源。这就是为什么将资源提交给类似 Servlet 这样的程序处理。接下来,服务器会接受请求、校验请求、验证用户凭据等。

    78820

    Spring Boot 2.0-WebFlux framework

    该模块包含对响应式 HTTP 和 WebSocket 客户端的支持,以及对REST,HTML浏览器和 WebSocket风格交互的响应式服务器Web应用程序的支持。...顶部作为 Flux 支持REST风格的 JSON 和 XML 序列化和反序列化,HTML视图呈现和服务器发送事件也是如此。...HttpServer server = HttpServer.create(HOST, PORT); server.newHandler(adapter).block(); 对于 Tomcat ,它看起来像这样...当使用像 Flux 或 Observable 这样的流类型时,请求/响应或映射/路由级别中指定的媒体类型用于确定数据应如何序列化和刷新。...没有运行服务器的测试与来自Spring MVC的 MockMvc 相当,其中使用模拟请求和响应,而不是使用套接字通过网络连接。然而, WebTestClient 也可以针对正在运行的服务器执行测试。

    3.1K50

    RestFul架构基础

    客户端在需要时发出 GET 请求获取指定资源。客户端可以在本地缓存请求结果,服务器可以在远程缓存结果,系统的中间层可以在请求链路中间缓存结果。这是一个与具体应用程序无关的特性,可以加入系统设计中。...接下来,当一切就绪时,使用基于超媒体的 MIME 类型,这样就可以充分享受 REST 的好处了。 4. 动词 动词是用来与服务器资源交互的方法或操作。...正如之前提到的那样,只要服务器支持,客户端可以通过内容协商提前指定请求的返回格式。 GET 请求关键点之一,不要修改服务器端的任何内容。...data=1234 不要这样做! 由于 GET 请求安全性允许缓存请求,这会让正在构建的 RESTful 系统陷入混乱。GET 请求也意味着幂等性,即多次请求不会对系统产生任何影响。...在新增雇员、下订单或提交表单的时候,我们无法预测服务器将如何命名正在创建的资源。这就是为什么将资源提交给类似 Servlet 这样的程序处理。接下来,服务器会接受请求、校验请求、验证用户凭据等。

    63910

    RESTful 架构基础

    客户端在需要时发出 GET 请求获取指定资源。客户端可以在本地缓存请求结果,服务器可以在远程缓存结果,系统的中间层可以在请求链路中间缓存结果。这是一个与具体应用程序无关的特性,可以加入系统设计中。...接下来,当一切就绪时,使用基于超媒体的 MIME 类型,这样就可以充分享受 REST 的好处了。 4. 动词 动词是用来与服务器资源交互的方法或操作。...正如之前提到的那样,只要服务器支持,客户端可以通过内容协商提前指定请求的返回格式。 GET 请求关键点之一,不要修改服务器端的任何内容。...data=1234 不要这样做! 由于 GET 请求安全性允许缓存请求,这会让正在构建的 RESTful 系统陷入混乱。GET 请求也意味着幂等性,即多次请求不会对系统产生任何影响。...在新增雇员、下订单或提交表单的时候,我们无法预测服务器将如何命名正在创建的资源。这就是为什么将资源提交给类似 Servlet 这样的程序处理。接下来,服务器会接受请求、校验请求、验证用户凭据等。

    94130

    Spring Boot 2.0 - WebFlux framework

    该模块包含对响应式 HTTP 和 WebSocket 客户端的支持,以及对REST,HTML浏览器和 WebSocket风格交互的响应式服务器Web应用程序的支持。...顶部作为 Flux 支持REST风格的 JSON 和 XML 序列化和反序列化,HTML视图呈现和服务器发送事件也是如此。...当使用像 Flux 或 Observable 这样的流类型时,请求/响应或映射/路由级别中指定的媒体类型用于确定数据应如何序列化和刷新。...没有运行服务器的测试与来自Spring MVC的 MockMvc 相当,其中使用模拟请求和响应,而不是使用套接字通过网络连接。然而, WebTestClient 也可以针对正在运行的服务器执行测试。...默认情况下,启动器使用 Reactor Netty 运行,但依赖关系可以像往常一样通过 Spring Boot 更改为不同的运行时。

    7.5K70

    Flink REST API 的设计指南

    Flink REST API 介绍Flink REST API 是 JobManager 提供的 HTTP 接口,用户可以通过 GET、POST 等 REST 定义的方法,请求获取作业、JobManager...从请求链路上来看,一个请求主要流向是:用户请求 → Netty Server → 用户定义的 Handler → ResourceManagerGateway → ResourceManager → TaskExecutorGateway...→ TaskManager → 用户定义的 Task请求体、返回体设计通常对于接受 GET 方法的 REST API 而言,可以直接使用 EmptyRequestBody 类作为请求体的结构,方便快捷...但对于 POST 方法的 API,我们通常需要实现 RequestBody 接口,来定义该 REST 接口的请求体。...REST Handler 设计handler 是一个 REST API 接口的执行者,我们可以通过实现 handleRequest 方法来定义请求的处理逻辑。

    1.7K20
    领券