我已经从这里获取信息实现了 Struts2 REST API
有没有办法在 Struts2 的 restful 插件中返回自定义响应。我做了所有必要的改变,比如
struts.rest.content.restrictToGET = false
从 这个问题得到。 我仍然收到此错误
No result defined for action `com.web.Controller.RestDemoController` and result create,
如果我不添加上述行,我仍然会得到相同的响应。
这是我提供的操作struts.xml
:
<action name="restdemo" class="com.web.Controller.RestDemoController">
<interceptor-ref name="customRestStack"></interceptor-ref>
</action>
这服务于所有请求GET
, POST
, PUT
, UPDATE
。
将 post 方法的返回类型从 HttpHeader 更改为 String 后,我仍然遇到相同的错误
Error 404: No result defined for action com.web.Controller.RestDemoController and result <?xml version="1.0" encoding="UTF-8"?> <Status><code>200</code><message>Success</message></Status>
这是我为 POST 编写的代码:
public HttpHeaders create(){
System.out.println(envision2Data.toString());
return new DefaultHttpHeaders("create").withStatus(200);
}
这是返回类型的 POST 请求方法String
:
public String create(){
System.out.println(envision2Data.toString());
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <Status><code>200</code><message>Success</message></Status>";
}
如果我发送对 xml 或 json 的请求,我得到了完美的响应,我确实得到了基于扩展的 xml 和 json。像 http://localhost:8080/restdemoapplication/restdemo.xml
,http://localhost:8080/restdemoapplication/restdemo.json
你可以看到我得到的回应。我为post写的方法上面写着name create。我在正文中确实有数据,并且我确实在 create 方法中完美地获取了数据。
现在在帖子中,正如我在多个示例中看到的那样
struts-rest , stuts2-rest-sample , struts2-rest-shopping-list
我不想像这些应用程序那样返回对发布请求的响应。我想返回我自己的响应,它将是一个状态码和这样的消息
<?xml version="1.0" encoding="UTF-8"?> <Status><code>200</code><message>Success</message></Status>
经过一些调试后,我发现DefaultContentTypeHandlerManager
在 struts2-rest-plugin 中考虑xhtml
中将其视为默认模板。虽然它应该是 XML 或 JSON。
我想回来
code : 1xx,2xx,4xx
message: Success, Fail
在接受 POST 请求时使用 XML 或 JSON 格式。
(这是应用程序同时接受非静态请求和静态请求。我可以将 xml 或 json 作为默认模板,但我不想要,因为它会影响非静态请求。)