From cf4f853522372957bcd15997a68e7ee35d316ec4 Mon Sep 17 00:00:00 2001 From: hans Date: Wed, 5 Jun 2019 10:42:53 +0200 Subject: [PATCH 1/3] redo zip. Old one was wrong --- labs/lab-08/solution/loginapp.old.zip | Bin 0 -> 18697 bytes labs/lab-08/solution/loginapp.zip | Bin 18697 -> 18692 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 labs/lab-08/solution/loginapp.old.zip diff --git a/labs/lab-08/solution/loginapp.old.zip b/labs/lab-08/solution/loginapp.old.zip new file mode 100644 index 0000000000000000000000000000000000000000..d1848fe38d4e89b6845e1b6db137dd31b9c29f9e GIT binary patch literal 18697 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 P&!0~}-&TGd2Lb#)YW=31 literal 0 HcmV?d00001 diff --git a/labs/lab-08/solution/loginapp.zip b/labs/lab-08/solution/loginapp.zip index d1848fe38d4e89b6845e1b6db137dd31b9c29f9e..0ec4c7dcf991589e7633067c39bbaa25852e1a1d 100644 GIT binary patch delta 15465 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⁢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 delta 15478 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 From 7b7332b5a6e64fa139186a778386e725e51cc958 Mon Sep 17 00:00:00 2001 From: hans Date: Wed, 5 Jun 2019 12:06:57 +0200 Subject: [PATCH 2/3] Delete loginapp.old.zip --- labs/lab-08/solution/loginapp.old.zip | Bin 18697 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 labs/lab-08/solution/loginapp.old.zip diff --git a/labs/lab-08/solution/loginapp.old.zip b/labs/lab-08/solution/loginapp.old.zip deleted file mode 100644 index d1848fe38d4e89b6845e1b6db137dd31b9c29f9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18697 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 P&!0~}-&TGd2Lb#)YW=31 From 1f13da6f908fb382f2fa4cd47b451d2c97157329 Mon Sep 17 00:00:00 2001 From: hans Date: Thu, 6 Jun 2019 10:18:25 +0200 Subject: [PATCH 3/3] Update README.md --- labs/lab-02/README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/labs/lab-02/README.md b/labs/lab-02/README.md index 80f3689..06da0e4 100644 --- a/labs/lab-02/README.md +++ b/labs/lab-02/README.md @@ -1,10 +1,10 @@ -# Lab 02 - Advanced Error Handling +# Lab 02 - Advanced Error Handling ## Introduction The objectives of this lab are listed below: -* Implement the required steps in the API proxy DefaultFaultRule to build the error response and send it back to the client. +* Implement the required steps in the API proxy DefaultFaultRule to build the error response and send it back to the client. * Set up the required FaultRules to catch all the error conditions raised by the Apigee policies and populate the runtime variables required to build the error response. * Learn how to raise your own errors in the API proxy. @@ -66,11 +66,13 @@ We will take as starting point the solution of Lab 01. +For debugging purpose, you can remove those lines, the error message will be sent clear to your client. + ### Catching errors raised by Apigee policies -If we leave things as they are, we will get an 500 Internal Server Error, each time an Apigee policy that has been set with continueOnError="false" raises an error. In order to avoid this, we will have to add FaultRules for the different error conditions that policies might raise. +If we leave things as they are, we will get an 500 Internal Server Error, each time an Apigee policy that has been set with continueOnError="false" raises an error. In order to avoid this, we will have to add FaultRules for the different error conditions that policies might raise. -In our example, we will have to add a new FaultRule in case the API key supplied in the request is missing or invalid. In this fault rule we will be assigning the values of the variables required to build the error response accordingly. +In our example, we will have to add a new FaultRule in case the API key supplied in the request is missing or invalid. In this fault rule we will be assigning the values of the variables required to build the error response accordingly. * FaultRule @@ -106,7 +108,7 @@ In our example, we will have to add a new FaultRule in case the API key supplied ### Raising errors -In this section we will explain how to raise errors ourselves. +In this section we will explain how to raise errors ourselves. #### Validation of incoming request fails @@ -190,4 +192,3 @@ Let's raise a 404 Not Found HTTP error in case the client requests an invalid pa -