# std.url

URL encoding and composition helpers for building HTTP requests.

```tea
use url from "std.url"
```

Examples may be fragments requiring the module import or additional setup.

## std.url.encode_component

```tea
pub def encode_component(text: String) -> String
```

Percent-encode a single URL component.

```tea
use url from "std.url"

@println(url.encode_component("hello world/tea")) # hello%20world%2Ftea
```

## std.url.decode_component

```tea
pub def decode_component(text: String) -> String
```

Decode a percent-encoded URL component.

```tea
use url from "std.url"

@println(url.decode_component("hello%20world%2Ftea")) # hello world/tea
```

## std.url.build_query

```tea
pub def build_query(params: Dict[String, String]) -> String
```

Encode query parameters without a leading "?".

```tea
use url from "std.url"

@println(url.build_query({"q": "green tea"})) # q=green+tea
```

## std.url.append_query

```tea
pub def append_query(base_url: String, params: Dict[String, String]) -> String
```

Append query parameters to an absolute URL.

```tea
use url from "std.url"

@println(url.append_query("https://example.com/search?page=1", {"q": "tea"}))
# https://example.com/search?page=1&q=tea
```

## std.url.join

```tea
pub def join(base_url: String, path: String) -> String
```

Resolve a relative path or URL against an absolute base URL.

```tea
use url from "std.url"

@println(url.join("https://example.com/api/", "users")) # https://example.com/api/users
@println(url.join("https://example.com/api/", "/users")) # https://example.com/users
```
