【问题标题】:MockMvc show corresponding curl command or http requestMockMvc 显示对应的 curl 命令或 http 请求
【发布时间】:2013-06-25 15:59:45
【问题描述】:

我有一行代码执行对 API 的请求,但我无法确定请求的确切格式。 mapper.writeValueAsString 来自here

mockMvc 来自here

mockMvc.perform(post("/press/group").param("filterId", filterId).content(mapper.writeValueAsString(someObject)).contentType(MediaType.APPLICATION_JSON))

我正在尝试将代码转换为 Python,如果有办法让我的 mockMvc 输出相应的 HTML 请求,那将非常有帮助。我查询的 API 缺少文档

谢谢,非常感谢任何指导

【问题讨论】:

    标签: java api spring-mvc curl


    【解决方案1】:

    MockMvc 允许您打印请求和响应。 在你的情况下,你应该这样做:

    mockMvc.perform(post("/press/group").param("filterId", filterId).content(mapper.writeValueAsString(someObject)).contentType(MediaType.APPLICATION_JSON)).andDo(print());
    

    这会将输出打印到控制台,看起来像这样:

    MockHttpServletRequest:
             HTTP Method = POST
             Request URI = /press/group
              Parameters = {filterId=[filterId_val]}
                 Headers = {}
                 Handler:
                    Type = com.yourCompany.yourController
                  Method = public ReturnType com.yourCompany.yourController.yourHandlerMethod(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,java.lang.String)
                   Async:
           Async started = false
            Async result = null
    Resolved Exception:
                    Type = null
            ModelAndView:
               View name = null
                    View = null
                   Model = null
                FlashMap:
    MockHttpServletResponse:
                  Status = 200
           Error message = null
                 Headers = {}
            Content type = null
                    Body = {"val1" : "val_one"}
           Forwarded URL = null
          Redirected URL = null
                 Cookies = []
    

    这应该足以让您在 python 中构造 http 请求。

    【讨论】:

      【解决方案2】:

      不了解 mockMVC,但如果它在 HTML 页面中呈现,您可以使用 Chrome 开发人员工具为您生成 curl 语句。

      启动工具/开发者工具,点击网络标签,点击链接/按钮/导致请求的东西,在网络标签中找到请求,右键,复制为cUrl。

      显然,如果它没有在 HTML 页面中呈现,这将不会有很大的帮助。

      【讨论】:

        【解决方案3】:

        提取mapper.writeValueAsString(someObject)字符串的值

        这个字符串是 JSON (MediaType.APPLICATION_JSON) 所以它应该看起来像:

        {"attribute":"value","attribute":"value"}
        

        还有param("filterId", filterId) 已添加到您的网址(变量filterId 是一些字符串,因此请提取它)

        /press/group?filterId:filterIdString
        

        将其粘贴到 curl 消息中:

        curl -X POST -d '{"attribute":"value","attribute":"value"}' -H "Content-Type: application/json" "admin:password@localhost:8080/press/group?filterId:filterId" -i
        

        看回复

        解释

        X 请求类型

        -d数据

        -H 内容类型

        admin:passwor@ 凭据

        -i信息

        【讨论】:

          猜你喜欢
          • 2016-08-04
          • 2021-12-05
          • 1970-01-01
          • 2020-09-17
          • 1970-01-01
          • 2019-07-07
          • 1970-01-01
          • 1970-01-01
          • 2011-03-16
          相关资源
          最近更新 更多