---
category: documentation
---

# HttpBody message Feature
The [HTTP Body](https://github.com/googleapis/googleapis/blob/master/google/api/httpbody.proto) messages allows a response message to be specified with custom data content and a custom content type header. The values included in the HTTPBody response will be used verbatim in the returned message from the gateway. Make sure you format your response carefully!

## Example Usage
1. Create a mux and configure it to use the `HTTPBodyMarshaler`. 

```golang 
	mux := runtime.NewServeMux()
	runtime.SetHTTPBodyMarshaler(mux)
```
2. Define your service in gRPC with an httpbody response message

```golang
import "google/api/httpbody.proto";
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";

service HttpBodyExampleService {

 	rpc HelloWorld(google.protobuf.Empty) returns (google.api.HttpBody) {
		option (google.api.http) = {
			get: "/helloworld"
		};
	}	

}
```
3. Generate gRPC and reverse-proxy stubs and implement your service.

## Example service implementation

```golang
func (*HttpBodyExampleService) Helloworld(ctx context.Context, in *empty.Empty) (*httpbody.HttpBody, error) {
	return &httpbody.HttpBody{
		ContentType: "text/html",
		Data:        []byte("Hello World"),
	}, nil
}

```