ここから情報を取得してStruts2 REST APIを実装しました
Struts2 の安らかなプラグインでカスタム レスポンスを返す方法はありますか。私はすべての必要な変更をしました
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 のリクエストを送信すると、get に対して完全な応答が得られます。拡張子に基づいて xml と json を取得します。のよう http://localhost:8080/restdemoapplication/restdemo.xml
に、http://localhost:8080/restdemoapplication/restdemo.json
そして、あなたは私が得る応答を見ることができます。私が投稿用に書いた方法は、名前を作成して上に書かれています。本体にデータがあり、作成メソッドでデータを完全に取得します。
次のような複数の例で見たように、投稿中
これらのアプリケーションのように、投稿リクエストに対して応答を返したくありません。自分なりのレスポンスを返したい、ステータスコードとこんなメッセージになります
<?xml version="1.0" encoding="UTF-8"?> <Status><code>200</code><message>Success</message></Status>
いくつかのデバッグの後DefaultContentTypeHandlerManager
、struts2-rest-pluginxhtml
がデフォルトのテンプレートと見なされることがわかりました。XMLまたはJSONのいずれかである必要があります。
帰りたい
code : 1xx,2xx,4xx
message: Success, Fail
POST リクエストが受け入れられた場合、XML または JSON のいずれかで。
(これは、非安静要求と安静要求の両方を受け入れるアプリケーションです。デフォルトのテンプレートとして xml または json を作成できますが、非安静要求に影響するため、望ましくありません。)