yahttp
Awesome simple HTTP client
Summary
| Latest Version | 0.13.0 |
|---|---|
| License | MIT |
| CI Status | Failing |
| Downloads | 0 |
| Last Indexed | 2026-07-21 05:26 |
Tags
Authors
- Denis Mishankov
Installation
nimble install yahttp
choosenim install yahttp
git clone https://github.com/mishankov/yahttp
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| yahttp | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Dependencies
| Package | Version | Optional |
|---|---|---|
| nim >= | 2.0.0 | No |
Source
| Repository | https://github.com/mishankov/yahttp |
|---|---|
| Homepage | https://github.com/mishankov/yahttp?tab=readme-ov-file#-yahttp---awesome-simple-http-client-for-nim |
| Registry Source | nimble_official |
README
⛵ yahttp - Awesome simple HTTP client for Nim
- Based on Nim std/httpclient
- No additional dependencies
- API focused on DX
Installation
nimble install yahttp
Examples
more examples here
Get HTTP status code
import yahttp
echo get("https://www.google.com/").status
Send query params and parse response to JSON
import json
import yahttp
let laptopsJson = get("https://dummyjson.com/products/search", query = {"q": "Laptop"}).json()
echo laptopsJson["products"][0]["title"].getStr()
API
Method procedures
get("http://api")
put("http://api")
post("http://api")
patch("http://api")
delete("http://api")
head("http://api")
options("http://api")
Arguments:
- url - request URL. The only required argument
- headers - request HTTP headers. Example: {"header1": "val", "header2": "val2"}
- query - request query params. Example: {"param1": "val", "param2": "val2"}
- encodeQueryParams - parameters for encodeQuery function that encodes query params. More
- body - request body as a string. Example: "{\"key\": \"value\"}". Is not available for get, head and options procedures
- files - array of files to upload. Every file is a tuple of multipart name, file name, content type and content
- sreamingFiles - array of files to stream from disc and upload. Every file is a tuple of multipart name and file path
- auth - login and password for basic authorization. Example: ("login", "password")
- timeout - stop waiting for a response after a given number of milliseconds. -1 for no timeout, which is default value
- ignoreSsl - no certificate verification if true
- sslContext - SSL context for TLS/SSL connections. See newContext
General procedure
request("http://api")
Has the same arguments as method procedures and one additional:
- httpMethod - HTTP method. Method.GET by default. Example: Method.POST
Response object
All procedures above return Response object with fields:
- status - HTTP status code
- body - response body as a string
- headers - table, where keys are header keys and values are sequences of header values for a key
- request - object with request data processed by yahttp
- url - stores full url with query params
- headers - stores HTTP headers with Authorization for basic authorization
- httpMethod - HTTP method
- body - request body as a string
Response object has some helper procedures:
- Response.json() - returns response body as JSON
- Response.html() - returns response body as HTML
- Response.to(t) - converts response body to JSON and unmarshals it to type t
- Response.ok() - returns true if status is greater than 0 and less than 400
- Response.raiseForStatus() - throws HttpError exceptions if status is 400 or above
Other helper functions
object.toJsonString() - converts object of any type to json string. Helpful to use for body argument