dromara / dromara/forest

[Bug]:使用编程式接口时,body传空对象字符串 {} 会触发占位符解析导致报错

Open
#249 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
1.9k
Forks
241
PR merge metrics
No merged PRs in 30d

Description

### 依赖环境:

Java: 25
Forest: 1.8.0
Backend: httpclient
SpringBoot: 3.5.6

### 问题简述:

使用编程式接口时,传空对象字符串 {} 会触发占位符解析导致报错

### 如何复现:

```java
Forest.post(url)
.contentTypeJson()
.addBody("{}")
.executeAsString();
```
会报错
```
com.dtflys.forest.exceptions.ForestIndexReferenceException: Index 0 out of bounds for arguments length 0

[From Template]

source: {}
^^ Index 0 out of bounds for arguments length 0

at com.dtflys.forest.mapping.MappingExpr.throwIndexReferenceException(MappingExpr.java:128)
at com.dtflys.forest.mapping.MappingIndex.render(MappingIndex.java:31)
at com.dtflys.forest.mapping.MappingUrlEncodedExpr.render(MappingUrlEncodedExpr.java:33)
at com.dtflys.forest.mapping.MappingTemplate.renderExpression(MappingTemplate.java:776)
at com.dtflys.forest.mapping.MappingTemplate.renderExpression(MappingTemplate.java:746)
at com.dtflys.forest.mapping.MappingTemplate.render(MappingTemplate.java:801)
at com.dtflys.forest.mapping.MappingTemplate.render(MappingTemplate.java:789)
at com.dtflys.forest.reflection.TemplateVariable.getValue(TemplateVariable.java:18)
```
某个接口请求入参中有设置"{}"该字符串的要求
能否提供一个设置原生raw字符串body的方法,不包含任何占位符解析功能的。

### 预期结果:

.addBody("{}")不触发占位符解析逻辑,直接设置"{}"字符串到请求体

### 实际结果:

.addBody("{}")触发了解析占位符逻辑报错

### 截图或视频:

_No response_

### 最小可复现代码:

_No response_

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.