

# 为 API Gateway 中的 WebSocket API 设置路由响应
<a name="apigateway-websocket-api-route-response"></a>

WebSocket 路由可以配置为双向或单向通信。除非您设置了路由响应，否则 API Gateway 不会将后端响应传递给路由响应。

**注意**  
您只能为 WebSocket API 定义 `$default` 路由响应。您可以使用集成响应来处理来自后端服务的响应。有关更多信息，请参阅 [集成响应概述](apigateway-websocket-api-integration-responses.md#apigateway-websocket-api-integration-response-overview)。

您可以使用 API Gateway 控制台、AWS CLI 或AWS开发工具包配置路由响应和响应选择表达式。

有关路由响应选择表达式的更多信息，请参阅[路由响应选择表达式](apigateway-websocket-api-selection-expressions.md#apigateway-websocket-api-route-response-selection-expressions)。

**Topics**
+ [使用 API Gateway 控制台设置路由响应](#apigateway-websocket-api-route-response-using-console)
+ [使用 AWS CLI 设置路由响应](#apigateway-websocket-api-route-response-using-awscli)

## 使用 API Gateway 控制台设置路由响应
<a name="apigateway-websocket-api-route-response-using-console"></a>

在创建 WebSocket API 并将代理 Lambda 函数附加到默认路由后，您可以使用 API Gateway 控制台设置路由响应：

1. 登录 API Gateway 控制台，对于 `$default` 路由选择集成了代理 Lambda 函数的 WebSocket API。

1. 在 **Routes**（路由）下，选择 `$default` 路由。

1. 选择**启用双向通信**。

1. 选择**部署 API**。

1. 将 API 部署到阶段。

 使用以下 [wscat](https://www.npmjs.com/package/wscat) 命令连接到您的 API。有关 `wscat` 的更多信息，请参阅[使用 `wscat` 连接到 WebSocket API 并向其发送消息](apigateway-how-to-call-websocket-api-wscat.md)。

```
wscat -c wss://{{api-id}}.execute-api.{{us-east-2}}.amazonaws.com/{{test}}
```

 按 Enter 键以调用默认路由。应返回您的 Lambda 函数的主体。

## 使用 AWS CLI 设置路由响应
<a name="apigateway-websocket-api-route-response-using-awscli"></a>

以下 [create-route-response](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-route-response.html) 命令为 `$default` 路由创建路由响应。您可以使用 [get-apis](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/get-apis.html) 和 [get-routes](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/get-routes.html) 命令来确定 API ID 和路由 ID。

```
aws apigatewayv2 create-route-response \
    --api-id {{aabbccddee}} \
    --route-id {{1122334 }} \
    --route-response-key '$default'
```

输出将与以下内容类似：

```
{
    "RouteResponseId": "abcdef",
    "RouteResponseKey": "$default"
}
```