

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# \$1util.http 中的 HTTP 協助程式
<a name="http-helpers-in-utils-http"></a>

**注意**  
我們現在主要支援 APPSYNC\$1JS 執行期及其文件。請考慮[在此處](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)使用 APPSYNC\$1JS 執行期及其指南。

`$util.http` 公用程式提供協助程式方法，您可以用來管理 HTTP 請求參數和新增回應標頭。

## \$1util.http utils 清單
<a name="http-helpers-in-utils-http-list"></a>

** `$util.http.copyHeaders(Map) : Map` **  
從映射複製標頭，不包括下列受限 HTTP 標頭：  
+ transfer-encoding
+ connection
+ host
+ expect
+ keep-alive
+ upgrade
+ proxy-authenticate
+ proxy-authorization
+ te
+ content-length
您可以使用此公用程式將請求標頭轉送至下游 HTTP 端點。  

```
{
    ...
    "params": {
        ...
        "headers": $util.http.copyHeaders($ctx.request.headers),
        ...
    },
    ...
}
```

**\$1util.http.addResponseHeader（字串、物件）**  
新增具有回應名稱 (`String`) 和值 (`Object`) 的單一自訂標頭。有下列限制：  
+ 除了 的限制標頭清單之外`copyHeaders(Map)`，標頭名稱也不符合下列任何項目：
  + Access-Control-Allow-Credentials
  + Access-Control-Allow-Origin
  + Access-Control-Expose-Headers
  + Access-Control-Max-Age
  + Access-Control-Allow-Methods
  + Access-Control-Allow-Headers
  + Vary
  + Content-Type
+ 標頭名稱不能以限制字首`x-amzn-`或 開頭`x-amz-`。
+ 自訂回應標頭的大小不能超過 4 KB。這包括標頭名稱和值。
+ 您應該為每個 GraphQL 操作定義每個回應標頭一次。不過，如果您多次定義同名的自訂標頭，最近的定義會出現在回應中。無論命名為何，所有標頭都會計入標頭大小限制。
+ 具有空白或限制名稱`(String)`或 null 值的標頭`(Object)`將被忽略，並產生新增到操作`errors`輸出的`ResponseHeaderError`錯誤。

```
export function request(ctx) {
  util.http.addResponseHeader('itemsCount', 7)
  util.http.addResponseHeader('render', ctx.args.render)
  return {}
}
```

****`$util.http.addResponseHeaders(Map)`****  
從指定的名稱`(String)`和值映射將多個回應標頭新增至回應`(Object)`。為 `addResponseHeader(String, Object)`方法列出的相同限制也適用於此方法。  

```
export function request(ctx) {
  const headers = {
    headerInt: 12,
    headerString: 'stringValue',
    headerObject: {
      field1: 7,
      field2: 'string'
    }
  }
  util.http.addResponseHeaders(headers)
  return {}
}
```