【问题标题】:How to create a curl snippet with Spring REST Docs to use double quotes instead of single ones?如何使用 Spring REST Docs 创建一个 curl 片段以使用双引号而不是单引号?
【发布时间】:2019-10-02 20:22:52
【问题描述】:

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

目前它在字符串值周围使用单引号生成 sn-ps:

$ 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 以在标头值周围使用双引号。 有人知道怎么做吗?

【问题讨论】:

    标签: spring spring-data spring-restdocs


    【解决方案1】:

    查看 spring rest 文档的源代码,包含标头变量的单引号在 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 sn-p:

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

    没有那么漂亮,但是当执行 sn-p 时,bash 变量替换会起作用。

    【讨论】:

    • 感谢您的回答,它对我有用。如果 Spring 团队在 CurlRequestSnippet 中使用双引号或者它是可配置的会更好,但他们可能有他们的原因,他们在 CurlRequestSnippet 类的每个 writer 方法中硬编码单引号。跨度>
    • @Karel 我是 Spring 团队的成员,也是 Spring REST Docs 的负责人。我同意报价。能否请open an issue 让我们在这里进行改进?
    • @AndyWilkinson 感谢您的评论。抱歉回复晚了。我在 github 上创建了这个问题:github.com/spring-projects/spring-restdocs/issues/650。我希望我遵循你们团队的惯例来创建和描述问题。
    • @Karel 感谢您提出问题。
    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 2011-12-08
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2021-01-19
    • 2018-05-18
    相关资源
    最近更新 更多