我已经从这里获取信息并实现了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请求,我像这样发送请求:
![enter image description here](https://istack.dev59.com/U2BwL.webp)
现在在post中,我已经看到了多个示例,例如: struts-rest, stuts2-rest-sample, struts2-rest-shopping-list。
我不希望像这些应用程序那样返回POST请求的响应。我想返回自己的响应,它将是一个状态码和一条消息,就像这样。
<?xml version="1.0" encoding="UTF-8"?> <Status><code>200</code><message>Success</message></Status>
在调试后,我发现 struts2-rest-plugin 中的 DefaultContentTypeHandlerManager 将 xhtml 视为默认模板。但实际上应该是 XML 或 JSON。
我想返回
code : 1xx,2xx,4xx
message: Success, Fail
当处理POST请求时,可以使用XML或JSON格式。该应用程序支持非RESTful请求和RESTful请求。我可以将XML或JSON设置为默认模板,但不想这样做,因为它会影响非RESTful请求。