Watch out for errors during deployment
Route conflict errors during deployment
Please note the following: If you already deployed an API definition before with the same path /{user-id}/get-cart-contents
,
then you will receive a conflict error as given below.
API deployment definitions conflict error: /{user-id}/get-cart-contents
This implies, when you update the version, you have to update the path as well, such as /v5/{user-id}/get-cart-contents
under the path
field in route
.
Watch out for more errors during API definition and deployment updates
Please read through how to update API definitions and deployments to understand possible errors and how to manage them.
BadRequest errors when invoking the API with inputs
If your API's implementation (Rib script which internally calls workers) gets a wrong input (Example: wrong types in http request),
it produces a BadRequest
. This makes Golem Gateway much more type safe than a typical Gateway
where it always routes to the backend regardless of wrong inputs.
Here is an example:
let user: u64 = request.path.user-id;
let my-worker = instance("my-worker-${user}");
my-worker.add-cart(request.body.product);
Here we expect the request body to have a product field, with all the fields of the record type that add-cart
function expects.
If the request body is wrong, we get a bad request error as shown below.
>
* Request completely sent off
< HTTP/1.1 400 Bad Request
< access-control-allow-origin: *
< content-length: 392
< date: Tue, 10 Dec 2024 03:42:54 GMT
<
* Connection #1 to host localhost left intact
Input request details don't match the requirements for rib expression to execute: Invalid value for the key path.
Error: Invalid value for the key product. Error: Expected function parameter type is u64. But found string.
Requirements. Record(TypeRecord { fields: [NameTypePair { name: "product-id", typ: U64)%