Java RESTAPI插件-参数使用body而不是查询字符串
我将此用作在Struts2上创建仅REST配置的参考: 我有一个模型,收据和几个测试字段:标题,正文 目前,为了创建收据,我通过以下方式发送请求:Java RESTAPI插件-参数使用body而不是查询字符串,java,json,rest,struts2,struts2-rest-plugin,Java,Json,Rest,Struts2,Struts2 Rest Plugin,我将此用作在Struts2上创建仅REST配置的参考: 我有一个模型,收据和几个测试字段:标题,正文 目前,为了创建收据,我通过以下方式发送请求: POST /receipt/?body=new_body&title=new_title 它给我创建了一张收据,上面有新的正文和标题 这不起作用: 邮寄/接收/ { “主体”:“新主体”, “标题”:“新标题” } 下面是一些代码: struts.xml: ReceiptController.java: 公共类ReceiptCont
POST /receipt/?body=new_body&title=new_title
它给我创建了一张收据,上面有新的正文和标题
这不起作用:
邮寄/接收/
{
“主体”:“新主体”,
“标题”:“新标题”
}
下面是一些代码:
struts.xml
:
ReceiptController.java
:
公共类ReceiptController实现模型驱动{
私有ReceiptManager ReceiptManager=新的ReceiptManager();
私有字符串id;
私人收据模型=新收据();
私人收藏清单;
公共对象getModel()
{
返回(列表==null?模型:列表);
}
公共HttpHeaders创建()
{
receiptManager.save(模型);
返回新的DefaultHttpHeader(“创建”);
}
公共HttpHeaders show()
{
model=receiptManager.find(id);
返回新的DefaultHttpHeader(“显示”);
}
公共HttpHeaders更新()
{
receiptManager.save(模型);
返回新的DefaultHttpHeader(“更新”);
}
公共HttpHeaders destroy()
{
型号=receiptManager.destroy(id);
返回新的DefaultHttpHeader(“销毁”);
}
公共HttpHeaders索引()
{
list=receiptManager.list();
返回新的DefaultHttpHeaders(“索引”).disableCaching();
}
公共字符串getId()
{
返回id;
}
公共无效集合id(字符串id)
{
this.id=id;
}
}
它应该按我所希望的那样工作,还是插件就是这样工作的?我猜postman在请求正文中发送JSON,并设置内容类型
application/JSON
。如果将json
拦截器添加到堆栈中,Struts可以解析请求
中的“json”
拦截器的说明:
如果使用了拦截器,将根据请求中的JSON内容填充操作,拦截器的规则如下:
- “内容类型”必须是“application/json”
- JSON内容必须格式良好,语法请参见
- 对于必须填充的字段,操作必须具有公共“setter”方法
- 支持的填充类型有:原语(int、long…String)、日期、列表、映射、原语数组、其他类(稍后将详细介绍)和其他类的数组
- JSON中要在列表或映射中填充的任何对象都是map类型(从属性映射到值),任何整数都是Long类型,任何十进制数都是Double类型,任何数组都是list类型