gpt4 book ai didi

spring - 如何使用 Spring REST Docs 创建一个 curl 片段以使用双引号而不是单引号?

转载 作者:行者123 更新时间:2023-12-02 00:50:14 24 4
gpt4 key购买 nike

Spring REST Docs 是创建最新 API 文档的一种非常好的方式。它还会从您的测试代码中生成代码片段,您可以将其插入到 API 文档中。当您的 API 用户阅读您的文档时,他们可以轻松地将代码片段复制并粘贴到他们的终端中并执行。

目前它在字符串值周围使用单引号生成片段:

$ curl 'https://some.url.com/teams' -i -X POST -H 'Content-Type: application/json' 
-H 'Accept: application/hal+json' -H 'Authorization: Bearer $TOKEN'
-d '{
"description" : "Test Team"
}'

在上面生成的 curl 请求中,$TOKEN 将是一个环境变量,但由于单引号,变量替换将不起作用。这就是为什么我想以某种方式配置 Spring REST Docs 以在 header 的值周围使用双引号。有人知道怎么做吗?

最佳答案

查看 spring rest 文档的源代码,包含 header 变量的单引号在 CurlRequestSnippet 中进行了硬编码,我没有看到扩展/覆盖该行为的简单方法 - https://github.com/spring-projects/spring-restdocs/blob/master/spring-restdocs-core/src/main/java/org/springframework/restdocs/cli/CurlRequestSnippet.java#L148

但是您可以结束单引号,用双引号将 $TOKEN 变量括起来,然后重新启动单引号,例如:header("Authorization", "Bearer '\"$TOKEN\"'"))

带有变量替换的示例测试的更多上下文:

this.mockMvc.perform(get("/").header("Authorization", "Bearer '\"$TOKEN\"'"))
.andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("Hello World")))
.andDo(document("home"));

生成 curl 片段:

$ curl 'http://localhost:8080/' -i -X GET 
-H 'Authorization: Bearer '"$TOKEN"''

不是很漂亮,但是当该片段被执行时,bash 变量替换起作用了。

关于spring - 如何使用 Spring REST Docs 创建一个 curl 片段以使用双引号而不是单引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58208877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com