2016-08-08 10 views
1

APIの一部を公開するためにwso2 APIマネージャーを使用します。しかし、私の問題は、誰かが無効なjsonボディを持つAPIリクエストを送信した場合、そのAPIコールを無視して、その無効なjsonボディをバックエンドに送信せずにリクエストされた人にエラーメッセージを送信できるかどうかです。 APIマネージャのバージョン:1.7WSO2 APIマネージャーで無効なJSON本体を使用してAPI呼び出しを無視する方法

  • これは正しくないJSON要求( "moduleCode" の値なしで送信しよう)

    { 
    "event": { 
        "portalType": "dfd", 
        "moduleCode": , 
        "role": "3", 
        "roleCode": "dfdf", 
        "languageID": "gd", 
        "password": "dfdfgd", 
        "phoneNumber": "2332323", 
    
        "resourceCode": [ 
         "8045005" 
        ] 
    
    
    }} 
    

は、それが可能な役割の値によって、ユーザを制限することでしたです上記のjsonで? APIマネージャ2.0でこれを達成するにはどうすればよいですか?

答えて

2

この要件を達成するための事前定義された方法はありません。しかし、WSO2 API Managerをこの要件に合わせてカスタマイズすることができます。

要求本体を検証し、要求にバックエンドに送信するのではなくエラーがある場合は応答を返すカスタムハンドラを作成できます。 hereに、APIマネージャー2.0用のカスタムハンドラーの記述方法を確認できます。

+1

お返事ありがとうございます。 APIMにはその機能があります。 –

+0

@AnushkaEkanayake:あなたの提案は大歓迎です。私の場合は –

0

メッセージビルダ[1]によって、今後のリクエストがSOAP形式に変換されます。このメッセージビルダは、受信メッセージのコンテンツタイプに基づいて選択されます。アプリケーション/ json用の独自のメッセージビルダを作成し、 。例えば[2]

[1] https://docs.wso2.com/display/ESB481/Working+with+Message+Builders+and+Formatters [2] https://github.com/anuruddhal/WSO2-ESB-Custom-Message-Builder/tree/master/CustomBuilder

1

あなたは"How to validate JSON request payload in API Manager"に、この記事を参照することができます。これはあなたのユースケースにちょうど対処しています。あなたの要求に合わせてXSDを追加するだけです。 APIマネージャーでは、リクエストまたはプリプロセスメッセージを検証する必要がある場合は、常に製品で使用可能なメディエーション拡張機能を使用することをおすすめします。

+1

は実用的ではありません。私はそのレベルで検証する必要はありません。リクエストボディが有効であるかどうかを確認したいだけです –

+0

あなたの質問では、 "moduleCode"の値なしで送信しようとしました。ペイロード内にそのような種類のデータを有効にしたい場合、私たち(WSO2)の推奨はメディエーション(ベロシティテンプレートを使用してすべてのapiに適用されます)、メディエーション拡張でその操作を行うことはできません。 –

関連する問題