3

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

mockMvc这里

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

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

谢谢,非常感谢任何指导

4

3 回答 3

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

于 2017-12-01T11:19:52.627 回答
0

提取字符串的值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信息

于 2013-08-20T18:39:15.500 回答
0

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

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

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

于 2013-06-25T16:07:45.877 回答