2018-03-12 01:06:01 +08:00
# HTTP adapter
2017-09-23 07:55:29 +08:00
2018-03-12 01:06:01 +08:00
HTTP adapter provides an HTTP API for sending messages through the platform.
2017-09-23 07:55:29 +08:00
## Configuration
The service is configured using the environment variables presented in the
following table. Note that any unset variables will be replaced with their
default values.
2021-07-22 21:47:55 +08:00
| Variable | Description | Default |
| --------------------------- | --------------------------------------------------- | --------------------- |
| MF_HTTP_ADAPTER_LOG_LEVEL | Log level for the HTTP Adapter | error |
| MF_HTTP_ADAPTER_PORT | Service HTTP port | 8180 |
| MF_NATS_URL | NATS instance URL | nats://localhost:4222 |
| MF_HTTP_ADAPTER_CLIENT_TLS | Flag that indicates if TLS should be turned on | false |
| MF_HTTP_ADAPTER_CA_CERTS | Path to trusted CAs in PEM format | |
| MF_JAEGER_URL | Jaeger server URL | localhost:6831 |
| MF_THINGS_AUTH_GRPC_URL | Things service Auth gRPC URL | localhost:8181 |
| MF_THINGS_AUTH_GRPC_TIMEOUT | Things service Auth gRPC request timeout in seconds | 1s |
2017-09-23 07:55:29 +08:00
## Deployment
2021-02-02 23:26:02 +08:00
The service itself is distributed as Docker container. Check the [`http-adapter` ](https://github.com/mainflux/mainflux/blob/master/docker/docker-compose.yml#L245-L262 ) service section in
docker-compose to see how service is deployed.
2017-09-23 07:55:29 +08:00
To start the service outside of the container, execute the following shell script:
```bash
# download the latest version of the service
2019-11-27 22:29:34 +08:00
git clone https://github.com/mainflux/mainflux
2017-09-23 07:55:29 +08:00
2019-11-27 22:29:34 +08:00
cd mainflux
2017-09-23 07:55:29 +08:00
2018-05-02 15:41:21 +08:00
# compile the http
make http
# copy binary to bin
make install
2017-09-23 07:55:29 +08:00
# set the environment variables and run the service
2020-04-07 18:02:17 +08:00
MF_NATS_URL=[NATS instance URL] \
MF_HTTP_ADAPTER_LOG_LEVEL=[HTTP Adapter Log Level] \
MF_HTTP_ADAPTER_PORT=[Service HTTP port] \
MF_HTTP_ADAPTER_CA_CERTS=[Path to trusted CAs in PEM format] \
MF_JAEGER_URL=[Jaeger server URL] \
MF_THINGS_AUTH_GRPC_URL=[Things service Auth gRPC URL] \
MF_THINGS_AUTH_GRPC_TIMEOUT=[Things service Auth gRPC request timeout in seconds] \
$GOBIN/mainflux-http
2017-09-23 07:55:29 +08:00
```
2018-11-07 04:09:17 +08:00
Setting `MF_HTTP_ADAPTER_CA_CERTS` expects a file in PEM format of trusted CAs. This will enable TLS against the Things gRPC endpoint trusting only those CAs that are provided.
2017-09-23 07:55:29 +08:00
## Usage
2021-07-22 21:47:55 +08:00
HTTP Authorization request header contains the credentials to authenticate a Thing. The authorization header can be a plain Thing key
or a Thing key encoded as a password for Basic Authentication. In case the Basic Authentication schema is used, the username is ignored.
2017-09-23 07:55:29 +08:00
For more information about service capabilities and its usage, please check out
2021-07-22 21:47:55 +08:00
the [API documentation ](https://api.mainflux.io/?urls.primaryName=http.yml ).
2021-06-23 19:31:46 +08:00
[doc]: https://docs.mainflux.io