Route

# 什么是 Route

Route 是 BytePower 提供的请求配置模块,你可以使用 Route 实现:

  • 自定义 BytePower 服务的请求路径
  • 自定义请求转发到别的第三方服务
  • 自定义请求的加密等预处理行为

# Route 的构成

一条完整的 Route 配置由以下几个部分构成:

  • method: 请求的方法,支持 GETPOSTPUTDELETE
  • path:请求的路径,和 Basic Information 中的 Default Domain 一起,共同组成了待处理请求的完整 URL
  • validator: 请求的用户身份登录校验和签名校验配置
  • body_process:请求消息的预处理配置,包括加密、编码等
  • hadle:请求的处理机制,主要是如下三种:
    • response: 直接返回某个特定的 response
    • endpoint: 请求 BytePower 内置的其他模块的服务
    • proxypass: 将请求转发到其他服务

# 使用方法

# 如何配置一个 Route

配置一个 Route 需要五个步骤

  1. method:接口类型
  2. path:接口请求路径
  3. validator:接口校验方式
    • 签名校验:user_session
    • session 校验:req_body_sig
  4. body_processing: 请求体处理,主要是加密,下文详细叙述
  5. handle: 下文详细叙述

# 如何配置 body_processing 加密

# request 加密

配置加密信息有几种方式

  • 不加密:body 部分不填写,保持信息为空即可
  • 加密:
    • 自定义加密方式:选择 body_processing,然后填写加密信息。
    • 引用上文中定义的加密方式:选择 inherit,然后勾选对应的加密方式名称。

请求体加密方式目前仅支持两种,而且这两种加密通常同时出现,一般来说建议先配置 base64 ,再配置 aes :

  • base64
  • aes

其中 defined encrypt variable 选项,即可选择已经定义过的 aeskey 变量。

其中需要注意的是,每个 Route 只能配置一个 aeskey,但是不同 Route 可以配不同的 aeskey。可以根据客户端需求自行配置。

# response 加密

默认配置了 request 加密的 Route 会按照同样规则。进行 response 加密,如果不需要,可以在配置中修改,选择skip_response_processing跳过 response 加密

# 如何配置 handle

# 配置一个转发

当你需要配置一个转发的时候,选择proxypass,并将转发地址填入。

其中,target 为需要转发到的目标地址。

# 配置一个服务

当你需要配置一个服务的时候,选择endpoint,再选择所对应的 Bytepower 服务所提供的 endpoint

endpoint : 接受请求的终端地址

  • 命名规则:分段式命名,中间以 . 间隔
    • 第一个关键字:服务提供方,通常是 bytepower
    • 第二个关键字:服务归属模块
    • 第三个关键字:接口具体功能

其中第二个关键字和第三个关键字之间可能会有一个 server 标识,当用户配置的接口为 S2S 接口时,需要选择带有该标识的 endpoint 。

# 如何使用通配符

当有多个接口需要配置同样方式的 Route 时,可以使用通配符进行配置,主要用于配置转发 proxypass

通配符定义方式:{a:.* }

通配符使用方式:{a}

例如:命名一个变量,可以将其格式定义为通配符,就可以以该变量代表一系列的关键字,在后面可以直接使用变量名来代表上文定义的符合通配符格式关键字。

# 如何添加一个变量

如图是一个配置好的变量 aes_key ,

  • 变量命名:常规命名规则,不能包含空格
  • 变量类型:目前变量类型仅支持 aes 。
  • key 值:可以由密钥生成工具生成,要求为仅包含小写字母和数字的 16 位组合。

变量定义好后,可以在后续的步骤里直接用于加密配置

# 如何添加一个 body_processing

Bytepower 允许在 body_processing_presets 中定义加密方式,在后续予以引用,每一种加密方式有单独的名字和加密规则。

# 如何配置默认全局加密

如果需要对所有服务接口配置统一加密,则需要在 default_routes 位置配置。

加密方式生效优先级:单独接口配置 > 全局加密配置

上次更新: 2023/11/22 11:01:47