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

要在 GoLand 代码编辑器中编写 HTTP 请求,请使用以下通用语法:

Method Request-URI HTTP-Version
Header-field: Header-value

Request-Body

在 HTTP 请求中使用注释

  • 在请求中,以//或开始任何行,#使其成为注释行。

    // A basic request
    GET http://example.com/a/

为 HTTP 请求设置名称

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

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

1.png

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

2.png

对 GET 请求使用简写形式

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

    // A basic request
    http://example.com/a/

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

  1. 通过在请求下方键入###分隔符来标记请求的结束。

    // A basic request
    http://example.com/a/
    
    ###
  2. 在分隔符下方编写另一个请求。

    // A basic request
    http://example.com/a/
    
    ###
    
    // A second request using the GET method
    http://example.com:8080/api/html/get?id=123&value=content

将长请求分成几行

  • 缩进除第一行之外的所有查询字符串行。

    // Using line breaks with indent
    GET http://example.com:8080
        /api
        /html
        /get
        ?id=123
        &value=content

通过身份验证访问 Web 服务

  • 根据您访问的 Web 服务,提供基本或摘要 授权标头。

    // Basic authentication
    GET http://example.com
    Authorization: Basic username password
    
    ###
    
    // Digest authentication
    GET http://example.com
    Authorization: Digest username password

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

提供请求消息体

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

  • 在适当的位置键入请求正文:

    // The request body is provided in place
    POST http://example.com:8080/api/html/post HTTP/1.1
    Content-Type: application/json
    Cookie: key=first-value
    
    { "key" : "value", "list": [1, 2, 3] }

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

  • 要从文件中读取请求正文,请键入<符号,后跟文件的路径。

    // The request body is read from a file
    POST http://example.com:8080/api/html/post
    Content-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.1
    Content-Type: multipart/form-data; boundary=boundary
    
    --boundary
    Content-Disposition: form-data; name="first"; filename="input.txt"
    
    // The 'input.txt' file will be uploaded
    < ./input.txt
    
    --boundary
    Content-Disposition: form-data; name="second"; filename="input-second.txt"
    
    // A temporary 'input-second.txt' file with the 'Text' content will be created and uploaded
    Text
    --boundary
    Content-Disposition: form-data; name="third";
    
    // The 'input.txt' file contents will be sent as plain text.
    < ./input.txt --boundary--

要加快创建多部分/表单数据请求,请使用mptr 实时模板。

禁用以下重定向

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

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

  • 在请求之前,添加带有@no-redirect标记的注释行。

    // @no-redirect
    example.com/status/301

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

3.png

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

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

  • 在请求之前,添加带有@no-log标记的注释行。

    // @no-log
    GET example.com/api

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

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

  • 在请求之前,添加带有@no-cookie-jar标记的注释行。

    // @no-cookie-jar
    GET example.com/api

使用变量

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

在请求中提供一个变量

  • 将变量括在双花括号中作为{{variable}}.

变量名只能包含字母、数字、下划线_或连字符-。变量的值可以是以下任何一种:

  • 通过环境变量为每个环境显式提供
  • 通过$uuid$timestamp$randomInt预定义的动态变量动态生成
  • 通过该方法在响应处理程序脚本中以编程方式定义client.global.set

环境变量

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

4.png

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

定义环境变量

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

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

    • 如果您希望环境公开,请选择将环境添加到公共文件...。这会将环境添加到http-client.env.json文件中。此文件可以包含常见变量,例如主机名、端口或查询参数,并且旨在与您的项目一起分发。
    • 如果您希望环境是私有的,请选择将环境添加到私有文件...。这会将环境添加到http-client.private.env.json文件中。此文件可能包含密码、令牌、证书和其他敏感信息。默认情况下,它会添加到 VCS 忽略文件列表中。http-client.private.env.json文件中指定的变量值会覆盖公共环境文件中的值。

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

  1. 使用所需的变量填充创建的文件。

以下示例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=12345
Authorization: Basic dev-user dev-password
Content-Type: application/json

{
    "key": "my-dev-value"
}

production

GET http://example.com/api/json/get?id=6789
Authorization: Basic user password
Content-Type: application/json

{
    "key": "my-prod-value"
}

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

5.png

动态变量

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

  • $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/post
Content-Type: application/json

{
  "id": 999,
  "value": "content"
}

>> myFolder/myFile.json

以下示例 HTTP 请求在.idea /httpRequests/中创建myFile.json。如果文件已经存在,它会覆盖该文件。它还使用位于项目根目录中的handler.js脚本处理响应。

POST https://httpbin.org/post
Content-Type: application/json

{
  "id": 999,
  "value": "content"
}

> {{$projectRoot}}/handler.js

>>! {{$historyFolder}}/myFile.json

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

标签: goland注册码, goland激活码, goland破解, goland破解教程, goland注册码2021, goland注册码失效, goland注册码永久, goland注册码2022, GoLand, GoLand教程, GoLand基础教程, GoLand入门教程, GoLand高级教程, GoLand核心教程, GoLand破解插件, GoLand注册码在线生成, GoLand插件, GoLand主题