繁体   English   中英

MockMvc显示相应的curl命令或http请求

[英]MockMvc show corresponding curl command or http request

我有一行代码可以执行对API的请求,但是我无法弄清楚请求的确切格式。 这里 mapper.writeValueAsString

这里进行 mockMvc

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

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

谢谢,任何指导都非常感谢

不知道嘲笑MVC,但是如果将其呈现在HTML页面中,则可以使用Chrome开发人员工具为您生成curl语句。

启动工具/开发人员工具,单击“网络”选项卡,单击导致请求的链接/按钮/内容,在“网络”选项卡中找到该请求,右键单击,并复制为cUrl。

显然,如果未在HTML页面中呈现它,则不会有太多帮助。

提取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信息

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请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM