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

理解HTTP幂等性

再加上浏览器、Javascript、AJAX、JSON以及HTML5等技术和工具的发展,互联网应用架构设计表现出了从传统的PHP、JSP、ASP.NET服务器端动态网页向Web API + RIA(富互联网应用...Web API专注于提供业务服务,RIA专注于用户界面和交互设计,从此两个领域的分工更加明晰。在这种趋势下,Web API设计将成为服务器端程序员的必修课。...如果是在网页,一些不恰当的设计可能会使用户认为一次操作失败了,然后刷新页面,这就导致了withdraw调用两次,账户也多扣了一次钱。如图1所示: ?...比较容易混淆的是HTTP POST和PUT。POST和PUT的区别容易简单地误认为“POST表示创建资源,PUT表示更新资源”;而实际,二者均可用于创建资源,更为本质的差别是在幂等性方面。...两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI;所以,POST方法不具备幂等性。而PUT所对应的URI是要创建或更新的资源本身。

45300

理解HTTP幂等性

为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协议是一种分布式的面向资源的网络应用层协议,无论是服务器端提供Web服务,还是客户端消费Web服务都非常简单。...再加上浏览器、Javascript、AJAX、JSON以及HTML5等技术和工具的发展,互联网应用架构设计表现出了从传统的PHP、JSP、ASP.NET服务器端动态网页向Web API + RIA(富互联网应用...Web API专注于提供业务服务,RIA专注于用户界面和交互设计,从此两个领域的分工更加明晰。在这种趋势下,Web API设计将成为服务器端程序员的必修课。...如果是在网页,一些不恰当的设计可能会使用户认为一次操作失败了,然后刷新页面,这就导致了withdraw调用两次,账户也多扣了一次钱。如图1所示: ?...两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI;所以,POST方法不具备幂等性。而PUT所对应的URI是要创建或更新的资源本身。

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

分布式系统中所说的幂等性

大型网站应用架构中,越来越多的SOA或Restful的web api的流行归功于http协议。 幂等性定义 Http协议涉及到一种重要性质:幂等性。...如果是在网页,一些不恰当的设计可能会使用户认为一次操作失败了,然后刷新页面,这就导致了withdraw调用两次,账户也多扣了一次钱。...比较容易混淆的是HTTP POST和PUT。POST和PUT的区别容易简单地误认为“POST表示创建资源,PUT表示更新资源”;而实际,二者均可用于创建资源,更为本质的差别是在幂等性方面。...两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI;所以,POST方法不具备幂等性。而PUT所对应的URI是要创建或更新的资源本身。...对同一URI进行多次PUT的副作用和一次PUT是相同的;因此,PUT方法具有幂等性。 在介绍了几种操作的语义和幂等性之后,我们来看看如何通过Web API的形式实现前面所提到的取款功能。

71140

Node入门教程(12)第十章:Node的HTTP模块

所以Node初衷就是为了高性能的Web服务器去的,所以:Node的HTTP模块也是核心核心。...,回调函数就会被调用一次。...connection:当TCP建立连接的时候,该事件触发,提供了一个参数socket,为net.socket的实例(底层协议对象) close:当服务器关闭的时候会被触发 除此之外还有checkContinue...向请求客户端发送相应内容,data是buffer或字符串,encoding为编码 response.end([data],[encoding]) 结束响应,告知用户所有发送已经完成,当所有要返回的内容发送完毕,该函数必须调用一次...,如果不调用,客户端永远处于等待状态 总结 真正开发环境,不会用这么底层的API去做web网站或者微服务,一般会选择KOA或者EXPRESS等框架。

97160

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

标准的认证流程开始于一个访问服务保护资源的匿名请求, HTTP服务器随后处理了该请求并决定拒绝让它访问保护的资源, 因为该请求没有凭据; 随后HTTP Server发送了一个WWW-Authenticate...但是它主要用于包含页面的web应用, 例如MVC或Razor Page, 并不适用于REST/Web API, 所以不介绍它了....请求token的地址是 /api/authentication, 请求token用的是Basic方案, Post方法里就是先解码, 验证用户名和密码, 成功后调用GenerateToken生成token...view=aspnetcore-2.1&tabs=visual-studio#require-https), 它建议ASP.NET Core web应用都应该调用HTTPS重定向中间件, 这样就可以把所有的...现在允许5分钟10次请求,但是每10秒钟最多只能有两次请求。 第一次请求后: ? 5分钟内还剩9次,然后我10秒内连续发送两次请求,然后再发送一次请求: ? 这时超出了限制,Header里: ?

1.2K20

【百面成神】java web基础7问,你能坚持到第几问

在action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时调用一次。...其它层面:GET可以缓存、存储,POST不行 分别说明: get用来获取数据,post用来提交数据 get参数有长度限制(受限于url长度,具体的数值取决于浏览器和服务器的限制,最长2048字节...5.转发forward和重定向redirect的区别 重点:转发是服务器行为,属于同一次请求,访问本站点的其它页面。重定向是客户端行为,至少两次请求,可以访问任意URL。...,转发是服务器收到请求后为了完成响应跳转到一个新的地址;重定向至少请求两次,转发请求一次; 地址栏不同:重定向地址栏会发生变化,转发地址栏不会发生变化; 是否共享数据:重定向两次请求不共享数据,转发一次请求共享数据...,因为浏览器还得发出一个新的请求,所以如果在使用转发和重定向都无所谓的时候建议使用转发; 因为转发只能访问当前WEB的应用程序,所以不同WEB应用程序之间的访问,特别是要访问到另外一个WEB站点的资源的情况

18630

通过一组RESTful API暴露CQRS系统功能

GetInventoryItems方法能够获取仅包含了物品名称和Id的一个列表,它会根据ACCEPT头决定返回JSON或是XML(ASP.NET Web API能够支持这一功能)。...PUT、PATCH和DELETE是幂等的,而POST则不是幂等的(多次调用一个幂等的谓词的结果与仅调用一次是相同的)。...但因为这两个命令并非幂等(比如说,调用CheckInItemsToInventoryCommand两次应该添加两次库存),因此最适合的谓词实际POST。...除了这些方法之外的任何调用都会返回一个方法未找到(method not found)或者405状态码,ASP.NET Web API自身已经实现了这一功能: PUT /api/InventoryItem...所有这些都可以通过一个很小但可以运行的原型应用进行展现,该原型是通过ASP.NET Web API和AngularJS实现的。

69450

JSP学习

image Web浏览器发送HTTP请求到服务端,Controller(Servlet)获取并进行处理(例如参数解析、请求转发) Controller(Servlet)调用核心业务逻辑...Java Servlet 是运行在 Web 服务器或应用服务的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务的数据库或应用程序之间的中间层。...Java EE建立于Java SE之上,具有Web服务、组件模型、以及通信API等特性,这些为面向服务的架构(SOA)以及开发Web2.0应用提供了支持。...动态网站开发技术对比 *JSP:Java平台,跨平台性好,安全性高,适合开发大型、企业级Web应用程序,特别是分布式的计算框架(hadoop),比如电子银行、网上交易所…… *Asp.net:.Net...7、session对象(未学完) 定义 客户端与服务器的一次会话 指用户从进入网站到关闭浏览器所经过的时间,也就是用户浏览网站花费的时间 实际是一个特定的时间概念 保存在服务器的内存中 用户与

4.3K10

使用C#创建服务Web API

前言 C# Web API 是一种基于 .NET 平台(包括但不限于.NET Framework 和 .NET Core)构建 HTTP 服务的框架,用于创建 RESTful Web 服务。...在 C# 中,ASP.NET Web API 提供了一种模式和工具集,使得开发者能够方便地设计和实现对外暴露的API接口,这些接口可以各种客户端应用程序(如Web浏览器、移动应用、桌面应用或其他服务器端应用...活字格中的Web API 在活字格中,支持使用C#或VB.Net语言实现,可以运行在服务端,浏览器可以通过HTTP请求的方式调用服务端提供的Web API。...3、接下来,我们就可以在方法中书写自己的逻辑了,这里我们的代码具体如下,为了让活字格命令可以直接接收数组JSON数据,逻辑为当请求我们这个Web API时,会先从请求地址拿到要调用服务端命令名称,把标准化的数组...5、当触发Web API调用后,就可以看到代码已经可以进行调试了。 修改代码后再次调试 代码很难一次编写地完全正确,如果修改代码,需要执行以下步骤: 修改代码。 编译工程。

34910

Dapr 知多少 | 分布式应用运行时

一个事件驱动、可移植的运行时用于在云和边缘计算上构建微服务。 以上是Dapr官方GitHub仓库对Dapr的简介。...应用除了需要实现业务需求,还要兼顾非业务需求,集成诸如服务发现、负载均衡、失效转移、动态扩容、数据分片、调用链路监控等分布式系统的核心功能,对应用有很强的侵入性,这就是以Spring Cloud为代表的微服务框架的常见做法...Service-to-service invocation(服务调用) 提到跨服务方法调用,这个大家肯定会想,这简单啊,不就是服务暴露API就好了嘛。是,但不完全是。...比如nodeapp暴露了一个API:http://10.0.0.2:8000/neworder,按照传统的方式,直接HTTP POST这个API访问就得了,但在Dapr中,其提供了服务间方法调用的接口规范.../以最后一次写入为准),默认以最后一次写入为准。

1.5K10

如果调用ASP.NET Web API不能发送PUTDELETE请求怎么办?

[本文已经同步到《How ASP.NET Web API Works?》] 我们一般采用“HTTP方法重写”的方式来解决这个问题。...客户端发送的请求只能采用网络允许的HTTP方法(一般来说,GET和POST总是支持的),但是与资源操作方式相匹配的HTTP方法名称会通过一个请求报头发送给服务器。...在该方法中,我们根据指定的HTTP方法创建了一个指向目标Web API的HttpRequestMessage对象,并将其作为参数调用HttpClient对象的SendAsync方法对目标Web API发起调用...我们将这4个HttpClient对象作为参数调用辅助方法InvokeWebApi对目标Web API发起4次调用,除了第1次(由于InvokeWebApi是一个异步方法,代码中的第一次调用并不意味着它首先被执行...,更不能确保针对它的Web API调用率先完成)采用GET请求之外,其余请求均采用POST方法。

1.5K50

在一个空ASP.NET Web项目创建一个ASP.NET Web API 2.0应用

虽然命名为“ASP.NET Web API”,但是这个消息处理管道却是独立于ASP.NET平台的,这也是为什么ASP.NET Web API支持多种寄宿方式的根源所在。...三、以Web Host方式寄宿Web API 我们在上面已经提到过了,虽然命名为ASP.NET Web API,但是其核心的消息处理管道却是独立于ASP.NET平台的,所以我们可以对相同的Web API...“application/xml”ASP.NET Web API支持。...换句话说,WCF服务寄宿是针对具体某个服务类型的,而ASP.NET Web API的寄宿则是批量进行的。...由于Web API调用本质就是一次普通的发送请求/接收响应的过程,所以HttpClient其实可以作为一般意义发送HTTP请求的工具。

4.5K110

Tomcat+Servlet面试题都在这里

nio: JDK1.4开始支持,同步阻塞或同步非阻塞IO aio(nio.2): JDK7开始支持,异步非阻塞IO apr: Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作...第一次访问Servlet,我们发现init()和service()都被调用了 第二次访问Servlet,service()调用了 第三次访问Servlet,还是service()调用了 当我们关闭Tomcat...服务器的时候,destroy()调用了!...当Tomcat第一次访问Servlet的时候,Tomcat会负责创建Servlet的实例 初始化。当Servlet实例化后,Tomcat会调用init()方法初始化这个对象 处理服务。...POST方式:可以在请求的实体内容中向服务器发送数据,传送的数据量无限制。 请求参数的位置: GET方式:请求参数放在URL地址后面,以?

1.4K31

【ASP.NET Core 基础知识】--前端开发--使用ASP.NET Core和JavaScript进行通信

AJAX的出现改变了Web开发的方式,使得网页变得更加动态、交互性更强,用户体验得到了极大的提升。 核心原理 传统的Web页面在与服务器交互时,通常是通过整个页面的刷新来实现。...Client Proxy:SignalR提供了客户端代理,使得客户端可以轻松地调用服务器端Hub定义的方法,并处理从服务器端发送的消息。...POST:用于在服务创建新资源。 PUT:用于更新服务的资源。 DELETE:用于删除服务的资源。 这些HTTP方法与CRUD操作(创建、读取、更新、删除)相对应。...这些数据格式简单且易于解析,可以不同的客户端和服务端轻松地处理。...4.3 示例:使用ASP.NET Core创建一个简单的RESTful API,并在前端调用 创建ASP.NET Core Web API 项目 首先,您需要创建一个ASP.NET Core Web

10600

大型跨境电商 JVM 调优经历

而是,当该标志开启时,JVM通过CMSInitiatingOccupancyFraction的值进行每一次CMS收集,而不仅仅是第一次。...; CMS的GC线程对CPU的占用率会比较高,但在多核的服务还是展现了优越的特性,目前也部署在国内的各大电商网站上。...一:长期表现, 第一个变化:fgc的次数减少,减少了大概一倍以上; mobile工程,调整前基本一天1-2辆次,调整后基本就是2-3天一次: ?...5、GC仅在Java堆填满,以至于无法为堆分配请求提供服务时发生,或者在Java应用程序中显示调用System.gc()函数来释放内存(一些NIO框架就是用这个方法释放占用的DirectMemory)...API 配置(一)之应用 04. API 配置(二)之服务提供者 05. API 配置(三)之服务消费者 06. 属性配置 07. XML 配置 08. 核心流程一览 09.

1.3K00
领券