## Languages known issues

### Python

- Assert the type required in your server/client since python is able to receive `Bytes array` or `utf8 strings`.

```python
def SayHello(self, request, context):
    # request might be a byte array or a utf8 string

    r = HelloRequest.HelloRequest().GetRootAs(request, 0)
    reply = "Unknown"
    if r.Name():
        reply = r.Name()
    # Issues might happen if type checking isnt present.
    # thus encoding it as a `reply.decode('UTF-8')`
    return build_reply("welcome " + reply.decode('UTF-8'))

```

This can be prevented by making sure all the requests coming to/from python are `Bytes array`

```python
def say_hello(stub, builder):
    hello_request = bytes(builder.Output())
    reply = stub.SayHello(hello_request)
    r = HelloReply.HelloReply.GetRootAs(reply)
    print(r.Message())
```

### Go

- Always requires the `content-type` of the payload to be set to `application/grpc+flatbuffers`

example: `.SayHello(ctx, b, grpc.CallContentSubtype("flatbuffers"))`
