选项¶
就像 fetch
在 Request
实例中存储选项一样,Got 在 options
实例中存储选项。
它由 getter
和 setter
组成,提供快速的选项规范化和验证。
默认情况下,Got 将在失败时重试。若要禁用此选项,请执行以下操作, 设置 options.retry
为 {limit: 0}
.
合并行为解释¶
当已经设置了一个选项时,在默认情况下,再次设置它将用深度克隆替换它。 否则,合并行为将在选项的相应部分中进行记录。
如何存储选项¶
构造函数 - new Options(url, options, defaults)
- 接受与' got '函数相同的参数。
如果首选一个普通对象,它可以以以下方式使用:
注意,当提供了无效的选项时,构造函数会抛出,比如不存在的选项或输入错误。 在第二个例子中,它只在执行承诺时抛出。
对于 TypeScript 用户,' got '导出一个名为' OptionsInit '的专用类型。 它是一个普通对象,可以存储与“Options”相同的属性。
在性能方面,使用哪一个没有区别,尽管构造函数可能是首选的,因为它会自动验证数据。
Options
方法可能会有轻微的提升,因为它只是克隆选项,没有标准化。
它对于存储自定义 Got 客户端的基本配置也很有用。
重置选项¶
与 Got 11 不同,显式指定' undefined '不再保留父值。 为了保持父值,你不能将一个选项设置为' undefined '。 这样做将重置这些值:
为了重置' hooks ', ' retry '和' pagination ',必须创建另一个 Got 实例:
属性¶
url
¶
类型: string | URL
要请求的 URL。通常' url '表示一个WHATWG url.
Note
如果没有指定协议则抛出。
Note
如果' url '是一个字符串,那么' query '字符串将不会被解析为搜索参数。 这符合规范。 如果你想传递搜索参数,使用下面的' searchParams '选项。
Note
不允许使用前导斜杠,以加强一致性并避免混淆。 例如,当前缀URL是' https://example.com/foo ',输入是' /bar '时, 结果URL会变成' https://example.com/foo/bar '还是' https://example.com/bar '是不明确的。 后者由浏览器使用。
searchParams
¶
类型: string | URLSearchParams | object<string, Primitive>
WHATWG URL 搜索参数要添加到请求 URL 中。
如果你需要传递一个数组,你可以使用' URLSearchParams '实例:
Note
这将覆盖' url '中的' query '字符串。
Note
- ' null '值不进行字符串化,而是使用空字符串。
- ' undefined '值将清除原始键。
合并行为
- 覆盖现有属性。
prefixUrl
¶
类型: string
默认: ''
要加在 url
前面的字符串。
前缀可以是任何有效的 URL,无论是相对 URL 还是绝对 URL。
后面的斜杠 /
是可选的,会自动添加。
Note
更改' prefixUrl '也更新' url '选项如果设置。
Note
如果你传递一个绝对URL作为' URL ',你需要设置' prefixUrl '为一个空字符串。
signal
¶
类型: AbortSignal
你可以使用AbortController
来中止请求.
需要Node.js 16或更高版本.
method
¶
类型: string
默认: GET
用于发出请求的HTTP方法。
最常见的方法是: GET
, HEAD
, POST
, PUT
, DELETE
.
headers
¶
类型: object<string, string>
默认: {}
要发送的HTTP头。设置为undefined
的标头将被省略。
合并行为
覆盖现有属性。
isStream
¶
类型: boolean
默认: false
got
函数是否应该返回Request
双工流或Promise<Response>
。
body
¶
类型: string | Buffer | stream.Readable | Generator | AsyncGenerator | FormData
or form-data
instance
要发送的有效载荷。
对于 string
和 Buffer
类型,如果 content-length
和 transfer-encoding
头缺失, content-length
头将自动设置。
从 Got 12 开始,当 body
是 fs.createReadStream()
的实例时, content-length
头不会自动设置。.
从 Got 12 开始,您可以使用符合规范的 FormData
对象作为请求体,例如formdata-node
或formdata-polyfill
:
Note
如果指定了 body
,则不能使用 json
或 form
选项。
Note
如果使用此选项, got.stream()
将是只读的。
Note
除非 allowGetBody
选项设置为 true
,否则用 GET
传递 body
将抛出。
Note
此选项不可枚举,并且不会与实例默认值合并。
json
¶
类型: JSON-serializable values
JSON body. 如果设置, content-type
头默认为 application/json
。
form
¶
类型: object<string, Primitive>
使用 (new URLSearchParams(form)).toString()
将表单主体转换为查询字符串.
如果设置了, content-type
头默认为 application/x-www-form-urlencoded
.
parseJson
¶
类型: (text: string) => unknown
默认: (text: string) => JSON.parse(text)
用于解析 JSON 响应的函数。
stringifyJson
¶
类型: (object: unknown) => string
默认: (object: unknown) => JSON.stringify(object)
用于对 JSON 请求体进行字符串化的函数。
例如:忽略所有以下划线开头的属性
例如:所有数字都是字符串
allowGetBody
¶
类型: boolean
默认: false
将此设置为 true
以允许为 GET
方法发送正文。
然而,HTTP/2 规范说:
HTTP GET 请求包括请求头字段,没有有效负载主体
因此,该选项在使用 HTTP/2 时无效。
Note
此选项仅用于在没有其他选择时与不兼容的服务器交互。
timeout
¶
类型: object
See the Timeout API.
合并行为
覆盖现有属性。
retry
¶
类型: object
See the Retry API.
合并行为
覆盖现有属性。
hooks
¶
类型: object
See the Hooks API.
合并行为
Merges arrays via [...hooksArray, ...next]
encoding
¶
类型: string
默认: 'utf8'
Encoding to be used on setEncoding
of the response data.
To get a Buffer
, you need to set responseType
to 'buffer'
instead. Don't set this option to null
.
Note
This option does not affect streams! Instead, do:
responseType
¶
类型: 'text' | 'json' | 'buffer'
默认: 'text'
The parsing method.
The promise also has .text()
, .json()
and .buffer()
methods which return another Got promise for the parsed body.
It's like setting the options to {responseType: 'json', resolveBodyOnly: true}
but without affecting the main Got promise.
Note
When using streams, this option is ignored.
Note
'buffer'
will return the raw body buffer. Any modifications will also alter the result of .text()
and .json()
. Before overwriting the buffer, please copy it first via Buffer.from(buffer)
.
resolveBodyOnly
¶
类型: boolean
默认: false
If true
, the promise will return the Response body instead of the Response object.
context
¶
类型: object<string, unknown>
默认: {}
Note
内部的不可枚举属性**没有**合并。
包含用户数据。它对于存储认证令牌非常有用:
这个选项是可枚举的。为了在内部定义不可枚举的属性,执行以下操作:
合并行为
覆盖现有属性。
cookieJar
¶
类型: object | tough.cookieJar
Note
设置此选项将导致 cookie
报头被覆盖。
Cookie 的支持。自动处理解析和存储。
cookieJar.setCookie
¶
类型: (rawCookie: string, url: string) => void | Promise<void>
See ToughCookie API for more information.
cookieJar.getCookieString
¶
类型: (currentUrl: string) => string | Promise<string>
参见 ToughCookie API 了解更多信息。
ignoreInvalidCookies
¶
类型: boolean
默认: false
忽略无效的cookies,而不是抛出错误。
仅在设置了cookieJar
选项时有用。
Note
这是不推荐的!使用风险自负。
followRedirect
¶
类型: boolean
默认: true
定义是否应该自动跟随重定向响应。
Note
如果服务器在响应任何请求类型(POST, DELETE等)时发送了303
,Got将通过GET请求指向位置头中的资源。
这符合规范。
你也可以选择为其他重定向代码打开这个行为-参见methodRewriting
maxRedirects
¶
类型: number
默认: 10
如果超出,请求将被中止,并抛出MaxRedirectsError
。
decompress
¶
类型: boolean
默认: true
自动解压缩响应。这将设置accept-encoding
头为gzip, deflate, br
。
如果禁用,则作为Buffer
返回压缩响应。
如果您想自己处理解压,这可能很有用。
dnsLookup
¶
类型: Function
默认: dns.lookup
自定义DNS解析逻辑。
函数签名与dns.lookup
相同。
dnsCache
¶
类型: CacheableLookup | false
一个用于进行DNS查找的 CacheableLookup
实例。
在向不同的公共主机名发出大量请求时非常有用。
Note
- 当向内部主机名(如localhost、databasel.local等)发出请求时,该功能应该保持禁用状态。
- CacheableLookup在后台使用
dns.resolver4(…)
和dns.resolver6(…)
,当前两个失败时返回到dns.lookup(…)
,这可能会导致额外的延迟。
dnsLookupIpVersion
¶
类型: 4 | 6
默认: undefined
要使用的IP版本。指定undefined
将使用默认配置。
request
¶
类型: Function<ClientRequest | IncomingMessage> | AsyncFunction<ClientRequest | IncomingMessage>
默认: http.request | https.request
(depending on the protocol)
自定义请求函数。
这样做的主要目的是使用包装器支持HTTP/2.
cache
¶
类型: object | false
默认: false
缓存适配器实例用于存储缓存的响应数据。
cacheOptions
¶
类型: object
默认: {}
缓存选项用于指定请求。
http2
¶
类型: boolean
默认: false
Note
此选项需要Node.js 15.10.0或更新版本,因为旧版本的Node.js对HTTP/2的支持非常错误。
如果true
, request
选项将默认为http2wrapper.auto
,整个agent
对象将被传递。
Note
为了确定服务器是否真正支持HTTP/2,将进行ALPN协商。如果没有,则使用HTTP/1.1。
Note
将request
选项设置为https.request
将禁用HTTP/2的使用。它需要使用http2wrapper.auto
。
Note
当前Got版本可能使用旧版本的http2-wrapper
。
如果你想用最新的,把request
设置为http2wrapper.auto
,把http2
设置为true
。
请参阅http2-wrapper
文档了解有关代理和代理支持的更多信息。
agent
¶
类型: object
默认: {}
一个具有http
, https
和 http2
属性的对象。
Got将自动解析协议并使用相应的代理。默认值为:
Note
HTTP/2Agent
必须是 http2wrapper.Agent
的实例
throwHttpErrors
¶
类型: boolean
默认: true
如果true
,当状态码不是2xx
/ 3xx
时,它将抛出。
如果禁用此功能,则遇到错误状态码的请求将通过响应而不是抛出来解决。 如果您正在检查资源可用性并期望得到错误响应,这可能很有用。
username
¶
类型: string
默认: ''
用于基本身份验证的username
.
password
¶
类型: string
默认: ''
用于基本身份验证的password
.
localAddress
¶
类型: string | undefined
默认: undefined
发出请求的本地IP地址。
createConnection
¶
类型: Function | undefined
默认: undefined
当未使用 agent
选项时,用于检索net.Socket
实例的函数。
https
¶
类型: object
参见高级HTTPS API.
pagination
¶
类型: object
参见分页API.
setHost
¶
类型: boolean
默认: true
指定是否自动添加 Host
标头。
maxHeaderSize
¶
类型: number | undefined
默认: undefined
可选地覆盖--max-http-header-size
的值(默认 16KB: 16384
).
methodRewriting
¶
类型: boolean
默认: false
指定HTTP请求方法在重定向时是否应该重写为GET
。
由于规范倾向于只在303
响应上重写HTTP方法,这是Got的默认行为。
将methodRewriting
设置为true
也会重写301
和302
响应,正如规范所允许的那样。
这是 curl
和浏览器所遵循的行为。
Note
Got从不对307
和 308
响应执行方法重写,因为这是规范明确禁止的.
enableUnixSockets
¶
类型: boolean
默认: true
当启用时,请求也可以通过UNIX域套接字发送。
请注意,在即将到来的主要版本(Got v13)中,出于安全原因,此默认值将更改为false
。
!!! Warning
1 |
|
使用以下URL方案: PROTOCOL://unix:SOCKET:PATH
PROTOCOL
-http
或https
SOCKET
- 例如,UNIX域套接字的绝对路径:/var/run/docker.sock
PATH
- 例如,请求路径:/v2/keys
方法¶
options.merge(other: Options | OptionsInit)
¶
将other
合并到当前实例中。
如果你查看源代码,你会注意到内部有一个 this._merging
属性。
当它为true
时,Setters 的工作方式略有不同。
options.toJSON()
¶
返回一个新的普通对象,可以存储为JSON.
options.createNativeRequestOptions()
¶
为本地Node.js HTTP请求选项创建一个新对象。
换句话说,它将Got选项转换为Node.js选项。
Note
其他一些东西,比如超时,是由Got内部处理的。
options.getRequestFunction()
¶
返回用于发出请求的 http.request
-like 函数。
options.freeze()
¶
使整个 Options
实例只读。