Awesome
⛵ 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 argumentheaders
- request HTTP headers. Example:{"header1": "val", "header2": "val2"}
query
- request query params. Example:{"param1": "val", "param2": "val2"}
encodeQueryParams
- parameters forencodeQuery
function that encodes query params. Morebody
- request body as a string. Example:"{\"key\": \"value\"}"
. Is not available forget
,head
andoptions
proceduresfiles
- array of files to upload. Every file is a tuple of multipart name, file name, content type and contentsreamingFiles
- array of files to stream from disc and upload. Every file is a tuple of multipart name and file pathauth
- 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 valueignoreSsl
- no certificate verification iftrue
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 codebody
- response body as a stringheaders
- table, where keys are header keys and values are sequences of header values for a keyrequest
- object with request data processed byyahttp
url
- stores full url with query paramsheaders
- stores HTTP headers withAuthorization
for basic authorizationhttpMethod
- HTTP methodbody
- request body as a string
Response
object has some helper procedures:
Response.json()
- returns response body as JSONResponse.html()
- returns response body as HTMLResponse.to(t)
- converts response body to JSON and unmarshals it to typet
Response.ok()
- returnstrue
ifstatus
is greater than 0 and less than 400Response.raiseForStatus()
- throwsHttpError
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