35 lines
		
	
	
		
			1020 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1020 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ## 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"))` |