如何使用Rest Assured发送Content-Type为form-data的请求?
使用Rest Assured调用multipart/form-data类型API的完整实现
我帮你补全并优化了调用form-data类型API的代码,结合你提供的参数Map,下面是完整的可运行实现:
import io.restassured.RestAssured; import io.restassured.response.Response; import java.util.HashMap; import java.util.Map; public class FormDataApiClient { private Map<String, String> getFormParamsMap() { Map<String, String> formParams = new HashMap<>(); formParams.put("creatorId", "Instructor1"); formParams.put("creatorPlatform", "Web"); formParams.put("creatoredSource", "File"); formParams.put("creatoredType", "Auto"); formParams.put("deckId", "5a605b472e02d86561172dad"); formParams.put("userId", "kind"); return formParams; } public void invoke() { // 获取预定义的表单参数 Map<String, String> formParams = getFormParamsMap(); // 构建并发送multipart/form-data请求 Response response = RestAssured.given() // 指定请求内容类型为multipart/form-data .contentType("multipart/form-data") // 批量添加所有表单字段(适用于纯文本参数) .multiPart((key, value) -> true, formParams) // 如果需要添加认证头,比如Bearer Token,可在此添加 // .header("Authorization", "Bearer your_auth_token") .when() // 替换为你的实际API接口地址 .post("https://your-api-endpoint.com/xxx"); // 打印响应信息,方便调试 System.out.println("API响应状态码: " + response.getStatusCode()); System.out.println("API响应体内容: " + response.getBody().asString()); // 可选:添加响应断言,验证结果是否符合预期 response.then() .statusCode(200); // 示例:断言状态码为200 } }
关键说明:
- 表单参数处理:使用
multiPart()方法构建multipart/form-data请求,这里通过批量遍历参数Map的方式添加所有字段,比逐个添加更简洁高效 - 内容类型指定:必须显式设置
.contentType("multipart/form-data"),确保Rest Assured按照form-data格式封装请求 - 扩展场景:如果需要上传文件,只需额外添加
.multiPart("fileFieldName", new File("/path/to/your/file"))即可兼容文件上传需求 - 认证与配置:如果接口需要权限验证,可以在
given()后添加对应的请求头、Cookie或其他认证方式
内容的提问来源于stack exchange,提问作者Osanda Deshan
相关产品推荐
相关产品推荐

