Maison >développement back-end >Golang >Grequest s'inspire de la bibliothèque Request pour Python pour GO

Grequest s'inspire de la bibliothèque Request pour Python pour GO

DDD
DDDoriginal
2025-01-07 07:18:44506parcourir

Grequest is inspired by the Request library for Python for GO

Package golang simple et léger pour les requêtes http. basé sur un réseau puissant/http

Grequest s'inspire de la librairie Request pour Python et Guzzle en PHP, le but est de réaliser une librairie simple et pratique pour faire des requêtes http en go

La bibliothèque dispose d'une API flexible avec des méthodes qui renvoient un pointeur vers la structure de la bibliothèque, ce qui vous permet de décrire de manière déclarative une requête à l'aide d'une chaîne de méthodes.

Installation

go get github.com/lib4u/grequest

Usage

Obtenir une demande simple et obtenir une réponse sous forme de chaîne

req := app.Get("https://jsonplaceholder.typicode.com/todos/1").Do()
    response := req.Body().GetStrings()
    fmt.Println(response)

Obtenez une réponse et écrivez-la dans une structure json

type AutoGenerated struct {
    UserID    int    `json:"userId"`
    ID        int    `json:"id"`
    Title     string `json:"title"`
    Completed bool   `json:"completed"`
}
...
   var myJsonResponse AutoGenerated
    req := app.Get("https://jsonplaceholder.typicode.com/todos/1").Do()
    err := req.Body().GetWithJsonStruct(&myJsonResponse)
    if err != nil {
        fmt.Println("do ..")
    }
    fmt.Println(myJsonResponse.Title)

Demande de publication simple avec le corps de la charge utile JSON et obtenez l'état de la réponse

data := LoginRequest{
        Username: "example",
        Password: "12345",
    }
    req := app.Post("https://example.site/login").Body().SetJson(data).Do()
    fmt.Println(req.Status().GetCode())

Enregistrer simplement le fichier à partir de la réponse

// file will saved as ../files/image.png
app.Get("https://example.com/image.png").Do().Body().SaveFile()
//OR
app.Get("https://example.com/image.png").Do().Body().Path("/user/files").SaveFile()
//OR 
app.Get("https://example.com/image.png").Do().Body().ToFile("path/savedimage.png")

Envoi du formulaire avec fichiers et champs de texte et définition de l'en-tête

req := app.Post("https://example.site/form/")
    req.Header().Set("Client", "number_1")
    form := req.FormData().WithMultipart()
    form.AddField("first_name", "John")
    form.AddField("last_name", "Doe")
    form.AddFile("photo", "my_photo.png")
    form.AddFile("documents", "example.txt")
    form.AddFile("documents", "example2.txt")
    form.Push()
    req.Do()
    .....

Demande avec authentification

//With basic auth
req := app.Post("https://example.site/secret)
    req.Header().Set("Client", "number_1")
    req.Auth().SetBasic("user", "password")
    req.Do()
    ...
    //Sets bearer token
    req := app.Post("https://example.site/secret)
    req.Header().Set("Client", "number_1")
    req.Auth().SetBearer("myToken")
    req.Do()

Travailler avec des cookies

//Save cookie to file 
//By default this saved in  cookies/example.site/cookies.json
req := app.Post("https://example.site/cookies")
    req.Cookie().Save()
    ...
    // Load saved cookies form cookies/example.site/cookies.json
    reqWithCookie := app.Post("https://example.site/cookies")
    reqWithCookie.Cookie().Load()
    reqWithCookie.Do()
    ...

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn