sdf-http 0.4.3

SDF HTTP WASM client library
Documentation
# HTTP Client Library for WASM Component Model

HTTP Client Library for used in the WASM Component Model.  It uses [WASI-HTTP](https://github.com/WebAssembly/wasi-http).
It is part of [SDF](https://www.fluvio.io/sdf/quickstart) project.

This crate re-exports `http` crate.


## Usage in the SDF inline operator

While this can be used in the any WASM Component.  It is primarily used in the SDF dataflow.  Here is an example of how to use it in the SDF.

### Using Get api

Here `sdf-http` is used as rust dependency in the operator.
Noted that a single get call can be used to get the response.

```
  get:
    sources:
      - type: topic
        id: input-topic
    transforms:
      - operator: map
        dependencies:
          - name: sdf-http
            version: "0.4.3"
        run: |
          fn invoke_http(input: String) -> Result<String> {
            
            let uri = format!("http://localhost:3000/hello/{}", input);
            Ok(sdf_http::get(uri)?.text()?)
          }
    sinks:
      - type: topic
        id: output-topic

```

### Using Post api

For post operation, new body based builder is provider.  Instead of setting up uri and other parameters.  It starts with body.  It is optimized for JSON based operation.

Here is a simple example:
```
post:
    sources:
      - type: topic
        id: input

    transforms:
      - operator: map
        dependencies:
          - name: sdf-http
            version: "0.4.3",
            features: ["serde_json"]
        run: |
          fn invoke_post(input: String) -> Result<Out> {
             
             let input = sdf_http::serde_json::json!({
                "name": input
             });
             let response = sdf_http::json(input.to_string())
                  .bearer("123")
                  .post("http://localhost:3000/create")?;

             let out = sdf_http::serde_json::from_slice(response.as_slice())?;
          
            Ok(out)
             
          }
    sinks:
      - type: topic
        id: output
```

The builder provides existing api for builder as well as frequently used methods like `bearer` for setting up bearer token.
In addition, it re-exports both `serde` and `serde_json` so you don't have to import them separately.


# License

Licensed under Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or https://apache.org/licenses/LICENSE-2.0)