使用 Rest Assured multipart 将文件上传到 S3。

我们可以借助以下技术使用 Rest Assured multipart 将文件上传到 S3 -

  • Rest Assured 具有默认的 URL 编码功能。S3 URL 的问题在于它们包含特殊字符,例如 %2A、%3D。由于 URL 编码功能在 Rest Assured 中默认配置为 true 值,我们需要将其设置为 false 以便特殊字符在运行时不会转换为 ASCII 等效值。

    语法 -

    given().urlEncodingEnabled(false)

  • Rest Assured 将默认字符集附加到内容中。如果没有给出内容类型,这会导致问题。在某些情况下,我们可能需要在标题中提及内容类型。同时,Rest Assured 在发送请求时将默认字符集附加到内容类型。这会导致意外行为。为了摆脱这种情况,我们需要为类 EncoderConfig 设置一个假值。

    语法 -

    given().config( .encoderConfig( .append ))RestAssured.config()encoderConfig()DefaultContentCharsetToContentTypeIfUndefined(false)

示例代码实现

given().
//将 urlEncoding 设置为 false
urlEncodingEnabled(false).

//上传文件为 JSON 类型
header("Content-type", "application/json").

//将类 EncoderConfig 设置为 false
config(RestAssured.config().encoderConfig(encoderConfig().appendDefaultContentCharsetToContentTypeIfUndefined(false))).
body(Files.readAllBytes(Paths.get(payLoad.json))).
when().
put("endpoint").
then().
log().all().and()
.assertThat().statusCode(200);