2

つまり、私は URL をリッスンしていますv1/shop/{PATH_PARAM}/status.xml。でリクエストが行われるたびに、v1/shop/some_value/status.xmlmy メソッドにリダイレクトされます。

しかし、ユーザーがこのパスで間違いを犯したとしましょう。ジャージーはそれ自体で、「Bad Request」または「実装されていない」メソッドなどの応答を送信します。ジャージーがこの応答を送信する代わりに、それらの応答を処理できる方法はありますか? ビジネスケースのために実装されたものを除いて、すべてをリッスンする新しい関数を作成するとしましょう。したがって、適切に構造化されていないリクエスト、またはサポートされていないメディアリクエストはすべてこのメソッドに送られるため、より適切な応答をユーザーに送信できます

4

2 に答える 2

0

サーブレット フィルターを作成し、Web サービスのルート URL (または Web サービスがデプロイされている Web サーバーのルート URL) に一致するすべての URL をインターセプトするように構成し、要求を Web サービスに渡すことができます。応答はフィルタに到着します。何らかの Web サービス エラーの場合は、応答を任意のものに変更したり、カスタム エラー ページにリダイレクトしたりできます。

于 2012-10-26T22:36:04.250 に答える
0

「例外マッパー」を使用してこれを行いました。resteasy でそれを行う方法に関するチュートリアルは次のとおりです: https://community.jboss.org/wiki/RESTEasyExceptionHandlingWithExceptionMapper?_sscc=t

同僚は、ジャージーにも似たようなものがあると教えてくれました。

空のコンテンツが取得されないようにするために使用したコードは次のとおりです。ヘッダー/ HTTPステータスを確認することを忘れることがあるため、他の人も忘れることがあると確信しています。

import org.jboss.resteasy.spi.Failure;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;

@Provider
public class PipelineMgrExceptionMapper implements ExceptionMapper<Exception> {


    @Override
    public Response toResponse(Exception e) {
        if (e instanceof Failure) {
            Failure f = (Failure) e;
            return Response.fromResponse(f.getResponse()).entity(f.getMessage()).type(MediaType.TEXT_PLAIN).build();
        } else {
            return Response.status(500).entity(e.getMessage()).type(MediaType.TEXT_PLAIN).build();
        }
    }
}
于 2014-01-28T19:58:19.347 に答える