Skip to content

Commit ecf921e

Browse files
committed
support response as a random image
1 parent bf212a1 commit ecf921e

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

docs/site/content/zh/latest/tasks/mock.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,20 @@ items:
153153
bodyFromFile: /tmp/baidu.html
154154
```
155155

156+
通过下面的方式也可以生成图片:
157+
158+
```yaml
159+
items:
160+
- name: image
161+
request:
162+
path: /v1/image
163+
response:
164+
header:
165+
Content-Type: image/png
166+
body: |
167+
{{ randImage 300 300 }}
168+
```
169+
156170
#### 条件判断
157171

158172
对于查询类的 API,通常会接收参数,并根据参数的不同,返回相应的数据。这时候,可以用到条件判断的表达式:

pkg/mock/in_memory.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,16 @@ func (h *advanceHandler) handle(w http.ResponseWriter, req *http.Request) {
476476
}
477477
}
478478

479+
if strings.HasPrefix(h.item.Response.Header[util.ContentType], "image/") {
480+
if strings.HasPrefix(string(h.item.Response.BodyData), util.ImageBase64Prefix) {
481+
// decode base64 image data
482+
imgData := strings.TrimPrefix(string(h.item.Response.BodyData), util.ImageBase64Prefix)
483+
if h.item.Response.BodyData, err = base64.StdEncoding.DecodeString(imgData); err != nil {
484+
memLogger.Error(err, "failed to decode base64 image data")
485+
}
486+
}
487+
}
488+
479489
if err == nil {
480490
h.item.Response.Header[util.ContentLength] = fmt.Sprintf("%d", len(h.item.Response.BodyData))
481491
w.Header().Set(util.ContentLength, h.item.Response.Header[util.ContentLength])

pkg/mock/testdata/api.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ items:
5656
"status": "success"
5757
}]
5858
}
59+
- name: image
60+
request:
61+
path: /v1/image
62+
response:
63+
header:
64+
Content-Type: image/png
65+
body: |
66+
{{ randImage 300 300 }}
5967
proxies:
6068
- path: /v1/myProjects
6169
target: http://localhost:{{.GetPort}}

0 commit comments

Comments
 (0)