GimmeHttp
GimmeHttp is a library for generating HTTP request code snippets in various languages based on a simple configuration. Whether you need to quickly prototype an API request or generate example code for documentation, GimmeHttp has you covered. Just provide the request details, and let GimmeHttp generate code in your desired language.
Supported Languages and Targets
Language | Targets |
---|
c | libcurl |
csharp | http, restsharp |
curl | native |
go | http |
javascript | fetch, axios, jQuery |
node | http, nod-fetch |
php | curl, guzzle |
python | requests, http |
ruby | nethttp, faraday |
rust | reqwest |
swift | nsurlsession |
Installation
To install GimmeHttp, simply use npm:
npm install gimmehttp
Simple Example
Here is a quick example of generating a simple GET request in Go:
import { Generate } from 'gimmehttp'
const settings = {
language: 'go',
target: 'native',
http: {
method: 'GET',
url: 'https://gofakeit.com'
}
}
const { code, error } = Generate(settings)
if (error) {
console.error(error)
}
console.log(code)
Output:
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://gofakeit.com"
req, _ := http.NewRequest("GET", url, nil)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
Generate Function
The core functionality of GimmeHttp is its Generate
function. This function takes in a request object and returns the generated code snippet as a string. The request object should have the following structure:
Generate(settings: Settings): Outcome
Settings Object
interface Settigns {
language: string
target: string
http: {
method: string
url: string
headers?: { [key: string]: string }
cookies?: { [key: string]: string }
body?: any
}
config?: {
indent?: string
join?: string
handleErrors?: boolean
}
}
Outcome Object
The Generate
function returns an Outcome
object. If the object
contains an error
property, an error occurred during code generation.
import { Generate } from 'gimmehttp'
const { code, error, language, client } = Generate(request)
if (error) {
console.error(error)
}
console.log(code)
console.log(language)
console.log(client)
interface Outcome {
error?: string
language?: string
client?: string
code?: string
}
Registry Custom Example
If you want to register a custom language/client, you can do so using the Register
function:
interface Target {
default?: boolean
language: string
target: string
generate: (config: Config, http: Http) => string
}
import { Register, Generate } from 'gimmehttp'
import type { Config, Http } from 'gimmehttp'
const myCustomTarget = {
language: 'html',
target: 'href',
generate(config: Config, http: Http): string {
return `<a href="${http.url}">${http.method}</a>`
}
}
Register(myCustomTarget)
const settings = {
language: 'html',
target: 'href',
http: {
method: 'GET',
url: 'https://gofakeit.com'
}
}
const { code, error } = Generate(settings)
if (error) {
console.error(error)
}
console.log(code)
Output:
<a href="https://gofakeit.com">GET</a>
Examples
POST Request Example
const settings = {
language: 'javascript',
target: 'fetch',
http: {
method: 'POST',
url: 'https://gofakeit.com',
headers: {
'Content-Type': 'application/json'
},
body: {
key1: 'value1'
}
}
}
const { code, error } = Generate(settings)
if (error) {
console.error(error)
}
console.log(output)
Output:
fetch("https://gofakeit.com", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({"key1":"value1"}),
})
.then(response => {
if (!response.ok) {
throw new Error("Network response was not ok");
}
return response.text();
})
.then(data => console.log(data));
Contributing
GimmeHttp is an open-source project that welcomes contributions from the community. If you would like to contribute, please follow these steps:
- Fork the repository
- npm install
- npm run dev
- open http://localhost:1111
- Make your changes
- Write tests
- Git commit and push your changes
- Submit a pull request
Feel free to contribute to the project, suggest improvements, or report issues on our GitHub page!