Skip to content
This repository has been archived by the owner on Jul 9, 2024. It is now read-only.

Commit

Permalink
fix a typo and add document.
Browse files Browse the repository at this point in the history
  • Loading branch information
foxgem committed Mar 3, 2017
1 parent cd19a26 commit f223fc6
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 5 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ dgate的主要特性:
- DSL为groovy语法
- 支持mock
- 支持url的转发和组合(即一个外部url对应后端多个url),并支持before(向后端发送请求前)和after(收到后端全部响应后)闭包。
- 支持request透传:form和upload用这种模式。
- 支持URL Path Parameters
- 支持JWT
- 支持CORS
Expand Down
28 changes: 25 additions & 3 deletions docs/user_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ url {
methods //支持的HTTP Method
upstreamURLs { 上游URL列表(UpStreamURL) }
expected //期望返回值
relayTo //透传请求到后端
}
~~~

Expand Down Expand Up @@ -261,6 +262,25 @@ UpStreamURL除了支持一般的url格式,还支持url path parameters,格

即对于每一种HTTP method,都有各自响应体,每个响应体的格式都是由statusCode和payload组成。

## 透传请求(Relay请求)

有时,期望前端的请求只是从dgate穿堂而过,不做任何修改,如下面两类请求:
- FORM表单
- FileUpload

这就是relay请求发挥作用的地方,在实际中,凡事注明是relayTo的url,dgate会将源request完整不动的发到后端,包括它的request header。它的配置如下:

~~~
"/relayAnotherURL" {
relayTo {
host = 'localhost'
port = 8081
}
}
~~~

对于relay请求,不需要指定后端url,只需指定主机名和端口即可。这也正是透传的含义:除了位置不同,其余都一样,这样也可以方便老旧程序快速和dgate集成。但需注意:relay请求不支持before/after闭包。

## 安全

dgate支持JWT Token来认证每个访问层请求,当配置中出现login时,安全机制即被触发。
Expand Down Expand Up @@ -416,12 +436,14 @@ cors配置并非必需的,若没有,dgate不会支持CORS。CORS的配置项

## 每个请求的附加参数

dgate会给每个发往后端服务的请求参数中添加若干参数,通过下面的key可以获得:
- nameOfApiGateway,Api Gateway的名字,字符串。
- token,已解码的jwt token,其类型是一个Map,内容依赖于在产生token时设置的值。如:在产生时包含[sub, name, role]这几个键值,则此处就获得这3个键值。若在产生时为[sub, name, role, other],则此处就可以会有这4个键值。只要请求头中携带有dgate签发的jwt,每个发往后端服务的请求参数中就会有这个参数。
dgate会给每个发往后端服务的请求头中添加若干参数,通过下面的key可以获得:
- dgate-gateway,Api Gateway的名字,字符串。
- dgate-jwt-token,已解码的jwt token json字符串,内容依赖于在产生token时设置的值。如:在产生时包含[sub, name, role]这几个键值,则此处就获得这3个键值。若在产生时为[sub, name, role, other],则此处就可以会有这4个键值。只要请求头中携带有dgate签发的jwt,每个发往后端服务的请求参数中就会有这个参数。

注意:除了必需的几个属性,JWT Token中token本身是可以附加其他属性进来的。相当于将token本身作为信息的载体。

这些头都是以BASE64编码放入的,故取出时需要用BASE64解码。

## 断路器设置

dgate缺省会为每个上游服务(注:对于Mock服务,断路器设置无效)设置一个断路器,缺省的配置如下:
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/top/dteam/dgate/utils/RequestUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

public class RequestUtils {

public static final String JWT_HEADER = "dagte-jwt-token";
public static final String API_GATEWAY_NAME_HEADER = "dagte-gateway";
public static final String JWT_HEADER = "dgate-jwt-token";
public static final String API_GATEWAY_NAME_HEADER = "dgate-gateway";

private static final Logger logger = LoggerFactory.getLogger(RequestUtils.class);

Expand Down

0 comments on commit f223fc6

Please sign in to comment.