VirusTotalNet icon indicating copy to clipboard operation
VirusTotalNet copied to clipboard

Can't access HTTP request body in java11-vert-x template.

Open p-fortier opened this issue 4 years ago • 3 comments

Expected Behaviour

When building a function using the java11-vert-x template, i should be able to access the HTTP request body from the RoutingContext object.

Current Behaviour

Recovering body using Vertx API e.g routingContext.getBody() raises a NullPointerException because the routingContext object isn't populated with the HTTP request body.

Possible Solution

Adding a BodyHandler object to the Vertx router handlers will populate the RoutingContext and fix the issue.

Steps to Reproduce (for bugs)

link to a live example: https://github.com/p-fortier/openfaas-java11-showcase

  1. Create a function using java11-vert-x template
  2. Access the body within the generated handler src/main/java/com/openfaas/function/Handler.java. e.g using System.out.println(routingContext.getBody());
  3. Observe the raised exception when invoking the function. HTTP 500 and function logs 3'. edit: no exception raised in this scenario, no http 500. logs inside showcase shows empty context 2021/04/06 08:21:48 stdout: null

Context

I was building an OpenFaaS workflow using faas-flow and java11-vert-x template. My goal was to build a workflow processing data from function to function. This issue prevented me from recovering the HTTP request body in any function.

Your Environment

Not relevant.

p-fortier avatar Apr 03 '21 12:04 p-fortier

Hi, thanks for your interest in OpenFaaS.

Under "Steps to Reproduce (for bugs)", please could you create a Github repo that shows how to reproduce this issue?

Thanks

alexellis avatar Apr 06 '21 07:04 alexellis

Hi @alexellis 👋

I edit the issue, adding a Github repo showcasing the issue I wanted to report with logs from my deployment. By doing so, I realised the poor quality of my first issue... Sorry about that.

The issue stated is wrong since RoutingContext.getBody() is @Nullable. The correct statement would be:

routingContext.getBody()returns null in each scenario logs -> 2021/04/06 08:21:48 stdout: null

Thanks for the quick reply !

p-fortier avatar Apr 06 '21 08:04 p-fortier

No problem. That helps a lot. Can you see my comment on the PR please?

alexellis avatar Apr 06 '21 09:04 alexellis