http语法

ads

本节介绍 HTTP 请求格式。有关发送 HTTP 请求和查看 HTTP 响应的详细信息,请参阅上文HTTP 客户端。

要在 GoLand 代码编辑器中编写 HTTP 请求,请使用以下通用语法:
Method Request-URI HTTP-VersionHeader-field: Header-value
Request-Body

在 HTTP 请求中使用注释


  • 在请求中,以//或开始任何行,#使其成为注释行。
// A basic requestGET http://example.com/a/

为 HTTP 请求设置名称


要在运行/调试配置、Search Everywhere和Run Anything中快速找到您的请求,您可以为其命名。

  • ###在、# @name或旁边的请求上方键入一个名称# @name =。


如果请求没有名称,GoLand 将使用其在请求文件中的位置,例如#1,作为请求名称。如果一个请求文件包含多个具有相同名称的请求,GoLand 会将请求位置编号附加到每个名称。这将使每个请求名称唯一,以便您可以在服务工具窗口、运行/调试配置等中轻松找到所需的名称。


对 GET 请求使用简写形式


  • 对于GET请求,您可以省略请求方法并仅指定 URI。

// A basic requesthttp://example.com/a/

在一个文件中编写多个请求


1. 通过在请求下方键入###分隔符来标记请求的结束。
// A basic requesthttp://example.com/a/
###

2. 在分隔符下方编写另一个请求。
// A basic requesthttp://example.com/a/
###
// A second request using the GET methodhttp://example.com:8080/api/html/get?id=123&value=content

将长请求分成几行


  • 缩进除第一行之外的所有查询字符串行。
// Using line breaks with indentGET http://example.com:8080    /api    /html    /get    ?id=123    &value=content

通过身份验证访问 Web 服务


  • 根据您访问的 Web 服务,提供基本或摘要 授权标头。
// Basic authenticationGET http://example.comAuthorization: Basic username password
###
// Digest authenticationGET http://example.comAuthorization: Digest username password

与其他 HTTP 请求的元素类似,提供的username和password可以通过环境变量参数化。

提供请求消息体


在请求中,在请求正文前添加一个空行并执行以下操作之一:

  • 在适当的位置键入请求正文:
// The request body is provided in placePOST http://example.com:8080/api/html/post HTTP/1.1Content-Type: application/jsonCookie: key=first-value
{ "key" : "value", "list": [1, 2, 3] }

如果您将Content-Type标头字段值设置为GoLand 支持的语言之一,则相应的语言片段将自动注入到 HTTP 请求消息正文中。如果没有指定Content-Type ,您可以手动注入语言片段。

  • 要从文件中读取请求正文,请键入<符号,后跟文件的路径。
// The request body is read from a filePOST http://example.com:8080/api/html/postContent-Type: application/json
< ./input.json

使用 multipart/form-data 内容类型


  • 将请求的Content-Type设置为multipart/form-data。要将文件作为multipart/form-data消息的一部分发送,请在Content-Dispositionfilename标头中包含参数。

POST http://example.com/api/upload HTTP/1.1Content-Type: multipart/form-data; boundary=boundary
--boundaryContent-Disposition: form-data; name="first"; filename="input.txt"
// The 'input.txt' file will be uploaded< ./input.txt
--boundaryContent-Disposition: form-data; name="second"; filename="input-second.txt"
// A temporary 'input-second.txt' file with the 'Text' content will be created and uploadedText--boundaryContent-Disposition: form-data; name="third";
// The 'input.txt' file contents will be sent as plain text.< ./input.txt --boundary--

禁用以下重定向


当 HTTP 请求被重定向(收到 3xx 状态码)时,会返回重定向的页面响应。在服务工具窗口中,您可以查看重定向的页面响应以及请求期间发生的所有重定向。

您可能想要禁用以下重定向。在这种情况下,会返回实际的重定向响应头(例如 301 或 302)。

  • 在请求之前,添加带有@no-redirect标记的注释行。
// @no-redirectexample.com/status/301

如果您已经有重定向请求,您可以单击服务工具窗口中列表旁边的禁用。这会将标签添加到初始请求中。Redirections``@no-redirect


禁用将请求保存到请求历史记录


如有必要,您可以阻止将请求保存到requests history。如果请求包含一些敏感数据并且您不想记录它,这会很有帮助。

  • 在请求之前,添加带有@no-log标记的注释行。
// @no-logGET example.com/api

禁用将收到的 cookie 保存到 cookie jar


如有必要,您可以阻止将接收到的 cookie 保存到 cookies jar中。这样,您将避免手动从http-client.cookies文件中删除不需要的 cookie。

  • 在请求之前,添加带有@no-cookie-jar标记的注释行。
// @no-cookie-jarGET example.com/api

使用变量


编写 HTTP 请求时,您可以使用variables参数化其元素。变量可以保存请求的主机、端口和路径的值、查询参数或值、标头值或在请求正文或外部文件中使用的任意值。

在请求中提供一个变量


  • 将变量括在双花括号中作为{{variable}}.
  • 变量名只能包含字母、数字、下划线_或连字符-。变量的值可以是以下任何一种:
  • 通过环境变量为每个环境显式提供
  • 通过$uuid、$timestamp和$randomInt预定义的动态变量动态生成
  • 通过该方法在响应处理程序脚本中以编程方式定义client.global.set。


环境变量


环境变量允许您在项目中存储一组环境定义。例如,您可以创建和使用{{host}}变量,而不是在请求中明确提供主机名。执行请求时,您可以在定义的环境之间进行选择,从而将其发送到特定主机:


在查看请求的结构、在浏览器中打开请求、执行请求并为其创建运行/调试配置时,所选环境将用作默认环境。

定义环境变量


环境变量在环境文件中定义。

1. 在请求的编辑器面板顶部,在Run with列表中,选择要添加环境的位置:

如果您希望环境公开,请选择将环境添加到公共文件...。这会将环境添加到http-client.env.json文件中。此文件可以包含常见变量,例如主机名、端口或查询参数,并且旨在与您的项目一起分发。

如果您希望环境是私有的,请选择将环境添加到私有文件...。这会将环境添加到http-client.private.env.json文件中。此文件可能包含密码、令牌、证书和其他敏感信息。默认情况下,它会添加到 VCS 忽略文件列表中。http-client.private.env.json文件中指定的变量值会覆盖公共环境文件中的值。

如有必要,您可以手动创建这些文件。

2. 使用所需的变量填充创建的文件。以下示例http-client.env.json环境文件定义了两个环境:开发和生产。附加的http-client.private.env.json文件包含敏感的授权数据。

http-client.env.json
{    "development": {        "host": "localhost",        "id-value": 12345,        "username": "",        "password": "",        "my-var": "my-dev-value"    },
"production": { "host": "example.com", "id-value": 6789, "username": "", "password": "", "my-var": "my-prod-value" }}

http-client.private.env.json 
{    "development": {        "username": "dev-user",        "password": "dev-password"    },
"production": { "username": "user", "password": "password" }}

示例 HTTP 请求如下: 
GET http://{{host}}/api/json/get?id={{id-value}}Authorization: Basic {{username}} {{password}}Content-Type: application/json
{ "key": "{{my-var}}"}

在执行请求之前,GoLand 允许您使用请求编辑器面板顶部的Run with列表来选择执行环境。根据您的选择,生成的请求将是以下之一:

development
GET http://localhost/api/json/get?id=12345Authorization: Basic dev-user dev-passwordContent-Type: application/json
{ "key": "my-dev-value"}

production 
GET http://example.com/api/json/get?id=6789Authorization: Basic user passwordContent-Type: application/json
{ "key": "my-prod-value"}

如果在执行请求时变量未解析,GoLand 会显示一条通知,让您快速创建、更新或选择不同的执行环境。


动态变量


每次运行请求时,动态变量都会生成一个值:

  • $uuid:生成一个通用唯一标识符(UUID-v4)
  • $timestamp: 生成当前的 UNIX 时间戳
  • $randomInt: 生成 0 到 1000 之间的随机整数。

例如:
GET http://localhost/api/get?id={{$uuid}}

处理响应


您可以使用 JavaScript 处理响应。键入>请求后的字符并指定 JavaScript 文件的路径和名称或将响应处理程序脚本代码包裹在{% ... %}.

GET https://httpbin.org/get
> /path/to/responseHandler.js
GET https://httpbin.org/get
> {% client.global.set("my_cookie", response.headers.valuesOf("Set-Cookie")[0]);%}

重定向响应


您可以将响应重定向到文件。如果文件已存在,则用于>>创建带有后缀的新文件,如果文件存在>>!则重写该文件。您可以指定绝对路径或相对于当前 HTTP 请求文件的相对路径。您还可以在路径中使用变量,包括环境变量和以下预定义变量:

  • {{$projectRoot}}指向项目根目录:.idea
  • {{$historyFolder}}指向.idea /httpRequests/

以下示例 HTTP 请求在 HTTP 请求文件旁边的 myFolder 中创建 myFile.json 并将响应重定向到它。如果文件已经存在,它会创建myFile-1.json等等。

POST https://httpbin.org/postContent-Type: application/json
{ "id": 999, "value": "content"}
>> myFolder/myFile.json

以下示例 HTTP 请求在.idea/httpRequests/中创建myFile.json。如果文件已经存在,它会覆盖该文件。它还使用位于项目根目录中的handler.js脚本处理响应。
POST https://httpbin.org/postContent-Type: application/json
{ "id": 999, "value": "content"}
> {{$projectRoot}}/handler.js
>>! {{$historyFolder}}/myFile.json

对于 Windows,使用反斜杠指定路径。


程序员技术交流群

扫码进群记得备注:城市、昵称和技术方向

  1. ChatGPT还是被用来搞黄色了...
  2. 【GoLand教程】详解 GoLand HTTP 客户端
  3. 【GoLand教程】使用 GoLand 创建测试

最后编辑于:2024/1/16 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com