[英]How to transform a curl command to HTTP POST request using java
[英]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.