4

ここから情報を取得してStruts2 REST APIを実装しました

Struts2 レスト プラグイン

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が処理さPUTUPDATEます。

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

POSTリクエストの場合、次のようなリクエストを投稿します ここに画像の説明を入力

そして、あなたは私が得る応答を見ることができます。私が投稿用に書いた方法は、名前を作成して上に書かれています。本体にデータがあり、作成メソッドでデータを完全に取得します。

次のような複数の例で見たように、投稿中

struts-reststuts2-rest-samplestruts2-rest-shopping-list

これらのアプリケーションのように、投稿リクエストに対して応答を返したくありません。自分なりのレスポンスを返したい、ステータスコードとこんなメッセージになります

<?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 を作成できますが、非安静要求に影響するため、望ましくありません。)

4

2 に答える 2