使用HTTPCaller进行HTTP请求

超文本传输协议(HTTP)是一种用于在客户端和服务器之间交换和通信超媒体(链接)资源的应用协议。它是在网络上交换信息的主要系统。

图片

HTTPCaller转换器使您能够构建所有请求,无论是简单的还是高级的请求,都能从FME工作流中连接到Web资源。

本文将介绍HTTP请求、响应和方法的基本概述,以及它们与HTTPCaller转换器的关系。 

让我们回顾一下典型的HTTP请求是如何构造的。请求的核心组件和组成是:

1.由三部分组成的开始行:

a.一个用于定义操作的HTTP方法。

b.通用资源标识符(URI)定义目标资源所在的位置。您可能最熟悉通用资源定位器(URL),这是一种以网络协议开始的URI,该协议定义如何访问资源,例如“https”或“ftp”。

c.HTTP版本。

2.头部带有用于传递名称/值对以及其他有关请求的信息。

3.表示头部字段结束的空行。

4.包含额外信息的可选消息体。

图片

请求的每个部分都可以从HTTPCaller的图形界面里进行定制。HTTPCaller将为您构建请求,您只需要填写参数即可。

定位器和方法

请求URL和请求方法分别指示要发送到服务器的资源位置和请求类型。查询字符串参数可以使用表进行输入,否则这些参数将成为URL的一部分。转换器将任何URL编码应用于条目。

HTTPCaller将始终使用最新版本的HTTP,因此无需再指定HTTP版本。

图片

头部

Headers表可用于为请求创建自定义HTTP头部。“Name”列提供了一个常用头文件的下拉列表,或者您也可以通过输入或使用属性来创建自己的头文件。

图片

消息体

可以对消息体进行格式化,以便通过HTTP请求发送内容。可以选择上传主体、使用文件或多部分/表单数据。Content Type标头也可以在旁边设置。

图片

根据所选择的HTTP方法,某些字段可设置为可用或隐藏。例如,GET请求不使用消息体。选择GET后,Body参数将不可用。

向URL发送请求会引发服务器的响应。响应消息的构造方式与请求大致相同。它们通常包含响应主体、标头、状态消息和状态代码。HTTPCaller有用于处理和存储响应的选项,以适应您的工作流。

1.由三部分组成的状态行:

a.HTTP版本。

b.通知请求成功或失败的状态代码。

c.带有状态码描述的状态消息。

2.头部带有用于传递名称/值对以及其他有关响应的信息。

3.表示头部字段结束的空行。

4.包含额外信息的可选消息体。

图片

消息体

在Workbench中,返回的响应体可以保存到属性或文件中。选择“文件”会提示更多菜单选项,用于在桌面上存储信息。如果要从Web服务下载文件,这将非常有用。此文件可以在HTTPCaller后面使用一个FeatureReader来读入工作空间。

图片

默认情况下,将响应体保存到属性_response_body中。它可以在可视化预览中查看,并且轻松传递到下游以在工作流中使用。使用响应体编码指定消息的字符编码。如果未填写,则会从随HTTP响应返回的标头中检测到它。

图片

状态和标头

当指定列表属性后,返回的标头将与要素一起存储,可在要素信息窗口中查看或在工作流中使用。

HTTP响应返回的状态码默认保存到_http_status_code属性中。对于不成功的请求,_error属性包含一个简短的错误消息。这使您可以轻松地确认成功的请求或排除意外的响应。

图片

HTTPCaller支持许多访问URL的常见操作:GET、PUT、POST、DELETE、HEAD、PATCH、OPTIONS、COPY、LOCK、MKCOL、MOVE、PROPFIND、PROPPATCH、UNLOCK、CHECKOUT、CHECKIN、UNCHECKOUT、LINK、UNLINK。

有时HTTP方法被称为动词。虽然大多数方法被设计为对指定的资源执行一些操作(例如GET、PUT、POST、DELETE、PATCH),但这是一种误导,因为有些方法最好被归类为名词(例如HEAD,OPTIONS)。

这里有一些关键术语可以帮助您有效地理解和使用不同的方法。

当一个方法是幂等时,这意味着一个相同的请求可以多次发出,但在第一次请求之后没有任何影响。例如,您可以在第一次调用时使用DELETE删除资源,但是重复调用不会再次删除相同的资源。

方法也可以是安全的,也可以是不安全的。安全的方法是只读的,它不会改变服务器或资源的状态。 

请求

行为

幂等

安全

GET

检索所请求资源的表示形式。

Yes

Yes

PUT

向服务器发送数据或请求更改。连续重复相同的请求没有效果。

Yes

No

POST

向服务器发送数据或请求更改。连续重复相同的请求可能会产生重复的效果。

No

No

DELETE

删除指定的资源。

Yes

No

HEAD

请求将以相同的GET请求返回的标头。

No

No

PATCH

部分更新或修改资源。

No

No

OPTIONS

请求该资源上允许的选项。

Yes

Yes

值得注意的是,并非每个服务器都配置为支持每种方法。此外,方法可以用于不同的目的,这取决于服务器的配置和设计。最好还是查阅相关文档。

并发

图片

发出多个HTTP请求会降低本应非常快的工作空间的速度。最大并发HTTP请求数允许用户同时发出多个请求。假设您正在向HTTPCaller发送100个请求,如果并发请求设置为25个,则FME将一次提交25个请求,总共提交4次。如果并发请求数设置为1,则FME每次提交1个请求,总共提交100次。一次提交的请求越多,这个参数就越有用!

图片

请注意,并非所有web服务都支持并发请求并拒绝它们。如果出现问题,请将并发请求设置为1,或者尝试下面提到的速率限制。

如果您在具有循环的自定义转换器中使用HTTPCaller,请将并发请求设置为1。循环不适用于并发请求。

速率限制

图片

API通常具有速率限制。这将防止用户一次提交过多的任务,使web服务不堪重负。大多数情况下,您不需要在HTTPCaller中使用速率限制选项。但是,如果您从API看到诸如“429- Too Many Requests”之类的错误,那么您可以使用速率限制功能。通常,您的API文档应该概述可以在HTTPCaller中应用的速率限制。

图片

重试失败的请求

图片

HTTPCaller可以自动重试请求。如果您正在连接的web服务遇到网络问题,这将很有帮助。网络问题可能会意外出现,因此通过重试请求,我们可以在这些问题出现之前缓解它们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值