Vytvorenie jednoduchého RESTful API v Go

Vyskúšajte Náš Nástroj Na Odstránenie Problémov

Tento tutoriál ukazuje, ako môžete vytvoriť jednoduché RESTful JSON api pomocou Go (Lang)

Ak píšete akúkoľvek formu webovej aplikácie, pravdepodobne budete pracovať s 1 alebo viacerými REST API s cieľom naplniť dynamické časti vašej aplikácie a vykonávať úlohy, ako je aktualizácia alebo odstraňovanie údajov v databáze.

V tomto tutoriáli budete stavať plnohodnotné REST API ktoré odhaľuje | _+_ |, | _+_ |, | _+_ | a | _+_ | koncové body, ktoré vám následne umožnia vykonávať celý rozsah | _+_ | operácie.



Aby to bolo jednoduché a zamerali sa na základné pojmy, nebudeme interagovať so žiadnymi backendovými databázovými technológiami na ukladanie článkov, s ktorými sa budeme hrať. Toto však napíšeme REST API takým spôsobom, že bude ľahké aktualizovať funkcie, ktoré definujeme, aby následne volali do databázy na vykonanie všetkých potrebných | _+_ | operácie.

Zdrojový kód - Úplný zdrojový kód tohto článku nájdete tu: TutorialEdge/create-rest-api-in-go-tutorial ## Predpoklady

  • Na svojom vývojovom počítači budete potrebovať nainštalovanú verziu Go 1.11+.

Ciele

Na konci tohto tutoriálu budete vedieť, ako si vytvoriť svoj vlastný REST-ful API v ** Go **, ktorý zvládne všetky aspekty. Budete vedieť, ako v rámci svojho projektu vytvoriť ** REST ** koncové body, ktoré zvládne | _+_ |, | _+_ |, | _+_ | a | _+_ | HTTP požiadavky.

Video-návod

REST architektúry

REST je v dnešnej dobe všade, od webových stránok po podnikové aplikácie, RESTful architektúra štýl je účinný spôsob poskytovania komunikácie medzi jednotlivými softvérovými komponentmi. Budova REST API vám umožnia ľahko oddeliť spotrebiteľa a výrobcu a sú zvyčajne už podľa konštrukcie bez štátnej príslušnosti.

Poznámka - Ak sa chcete dozvedieť viac o základoch REST API s potom sa pozrite Čo sú to RESTful API? ## JSON

Na účely tohto tutoriálu použijem JavaScript Object Notation ako spôsob odosielania a prijímania všetkých informácií a našťastie Go prichádza s vynikajúcou podporou kódovania a dekódovania týchto formátov pomocou štandardného balíka knižníc, encoding/json.

Poznámka - Ďalšie informácie o balíku encoding/json nájdete v oficiálnej dokumentácii: kódovanie/json ## Zaraďovanie

Aby sme to mohli ľahko Môžeme ľahko prevádzať dátové štruktúry v GO na JSON pomocou niečoho, čo sa nazýva zoraďovanie, ktoré vytvára bajtový segment obsahujúci veľmi dlhý reťazec bez vonkajšieho medzery.

Začíname so základným rozhraním API

Na začiatok budeme musieť vytvoriť veľmi jednoduchý server, ktorý zvládne požiadavky HTTP. Za týmto účelom vytvoríme nový súbor s názvom | _+_ |. V rámci tohto | _+_ | chceme definovať 3 rôzne funkcie. A | _+_ | funkcia, ktorá zvládne všetky požiadavky na našu koreňovú adresu URL, | _+_ | funkcia, ktorá sa bude zhodovať s prístupom k ceste URL s definovanou funkciou a | _+_ | funkciu, ktorá spustí naše API.

GET

POST

Ak to teraz spustíme na našom počítači, mali by sme vidieť spustenie nášho veľmi jednoduchého rozhrania API na porte 10 000, ak to ešte nebol vykonaný iným procesom. Ak teraz prejdeme na | _+_ | v našom lokálnom prehliadači by sme mali vidieť | _+_ | vytlačiť na našej obrazovke. To znamená, že sme úspešne vytvorili základňu, z ktorej vybudujeme naše REST API.

Poznámka - Ak chcete podrobnejší návod na vytvorenie webového servera založeného na prechode, pozrite sa na tento návod tu: Vytvorenie jednoduchého webového servera pomocou programu Go (Lang) ## Štruktúra našich článkov

Vytvoríme REST API, ktoré nám umožní | _+_ |, | _+_ |, | _+_ | a | _+_ | články na našom webe. Keď hovoríme o | _+_ | API označujeme ako API, ktoré dokáže zvládnuť všetky tieto úlohy: vytváranie, čítanie, aktualizácia a odstraňovanie.

čo sú tokenizované akcie

Predtým, ako začneme, budeme musieť definovať naše | _+_ | štruktúra. Go má tento koncept štruktúr, ktoré sú ideálne iba pre tento scenár. Vytvoríme | _+_ | struct, ktorý obsahuje názov, popis (popis) a obsah, ako napríklad:

DELETE

Náš Struct obsahuje 3 vlastnosti, ktoré potrebujeme na reprezentáciu všetkých článkov na našom webe. Aby to fungovalo, budeme musieť tiež importovať | _+_ | balík do nášho zoznamu dovozov.

Teraz aktualizujme naše | _+_ | fungovať tak, aby náš | _+_ | premenná je vyplnená niekoľkými zdanlivými údajmi, ktoré môžeme neskôr získať a upraviť.

PUT

Dokonalé, prejdime teraz k vytvoreniu nášho | _+_ | koncový bod, ktorý vráti všetky články, ktoré sme tu práve definovali.

Načítavajú sa všetky články

V tejto časti tutoriálu vytvoríme nový koncový bod REST, ktorý po stlačení | _+_ | žiadosť, vráti všetky články pre naše stránky.

Najprv začneme vytvorením novej funkcie s názvom | _+_ |, ktorá splní jednoduchú úlohu vrátenia našich novo osídlených | _+_ | premenná, kódovaná vo formáte JSON:

CRUD

CRUD

Výzva na | _+_ | robí úlohu kódovania nášho poľa článkov do reťazca JSON a následného zápisu ako súčasť našej odpovede.

Kým to bude fungovať, budeme tiež musieť pridať novú trasu do nášho | _+_ | funkcia, ktorá bude mapovať všetky hovory na | _+_ | na našu novo definovanú funkciu.

POST

Teraz, keď sme to urobili, spustite kód zadaním | _+_ | a potom otvorte | _+_ | vo vašom prehliadači a mali by ste vidieť JSON reprezentáciu vášho zoznamu článkov takto:

http: // localhost: 10 000/články odpoveď

GET

Úspešne sme definovali náš prvý koncový bod API.

V ďalšej časti tejto série aktualizujete svoje REST API tak, aby používalo | _+_ | router namiesto tradičného | _+_ | router.

Výmena smerovačov vám umožní jednoduchšie vykonávať úlohy, ako je napríklad analýza akejkoľvek cesty alebo parametrov dopytu, ktoré sa môžu nachádzať v prichádzajúcom | _+_ | žiadosť, ktorú budeme neskôr potrebovať.

Začíname so smerovačmi

Štandardná knižnica teraz poskytuje všetko, čo potrebujete na spustenie a spustenie vlastného jednoduchého rozhrania REST API, ale teraz, keď máme základné pojmy k dispozícii, mám pocit, že je čas predstaviť balíčky smerovačov tretích strán. Najpozoruhodnejším a najpoužívanejším je router gorila/mux ktorý má v súčasnej dobe 2 281 hviezd na Githube.

Budovanie nášho smerovača

Môžeme aktualizovať naše existujúce | _+_ | uložte a prehoďte | _+_ | so sídlom | _+_ | smerovač namiesto štandardnej knižnice, ktorá bola prítomná predtým.

Upravte svoje | _+_ | funkciu tak, že vytvorí nový smerovač.

PUT

DELETE

Keď to teraz spustíte, neuvidíte žiadnu skutočnú zmenu v spôsobe fungovania nášho systému. Stále sa spustí na rovnakom porte a vráti rovnaké výsledky v závislosti od koncových bodov, ktoré dosiahnete.

Jediným skutočným rozdielom je, že teraz máme smerovač gorila/mux, ktorý nám neskôr v tomto návode umožní ľahko vykonávať činnosti, ako je napríklad načítanie parametrov cesty a dotazu.

$ go run main.go

main.go

Premenné cesty

Zatiaľ je všetko v poriadku, vytvorili sme veľmi jednoduché rozhranie REST API, ktoré vracia domovskú stránku a všetky naše články. Čo sa však stane, ak si chceme pozrieť iba jeden článok?

Vďaka smerovaču gorilla mux môžeme do našich ciest pridať premenné a potom si na základe týchto premenných vybrať, ktoré články chceme vrátiť. Vytvorte novú trasu v rámci | _+_ | funkcia tesne pod našou | _+_ | trasa:

main.go

Všimnite si, že sme pridali | _+_ | na našu cestu. Toto bude predstavovať našu premennú id, ktorú budeme môcť použiť, ak chceme vrátiť iba článok s presným kľúčom. Zatiaľ náš | _+_ | struct neobsahuje vlastnosť Id. Teraz to doplníme:

homePage

Potom môžeme aktualizovať naše | _+_ | funkcia na naplnenie našich | _+_ | hodnoty v našich | _+_ | pole:

handleRequests

Teraz, keď sme to urobili, v našom | _+_ | funkciu, ktorú môžeme získať | _+_ | hodnotu z našej adresy URL a môžeme vrátiť článok, ktorý zodpovedá týmto kritériám. Pretože sme svoje údaje nikam neuložili, vrátime iba ID, ktoré bolo odoslané do prehliadača.

main

Ak prejdeme na | _+_ | potom, čo to teraz spustíme, mali by ste vidieť | _+_ | vytlačené v prehliadači.

Využime to | _+_ | hodnotu na vrátenie konkrétneho článku, ktorý zodpovedá danému kľúču.

main.go

Spustite to zavolaním | _+_ | a potom otvorte | _+_ | vo vašom prehliadači:

http: // localhost: 10 000/článok/1 odpoveď

package main import ( 'fmt' 'log' 'net/http' ) func homePage(w http.ResponseWriter, r *http.Request){ fmt.Fprintf(w, 'Welcome to the HomePage!') fmt.Println('Endpoint Hit: homePage') } func handleRequests() { http.HandleFunc('/', homePage) log.Fatal(http.ListenAndServe(':10000', nil)) } func main() { handleRequests() }

Teraz uvidíte článok zodpovedajúci kľúču | _+_ | vrátené ako JSON.

Vytváranie a aktualizácia článkov

V tejto časti tutoriálu sa chystáte zostaviť | _+_ |, | _+_ | a | _+_ | časť | _+_ | REST API. Už sme pokryli | _+_ | so schopnosťou čítať jednotlivé články aj všetky články.

ako získať údaje z excelového listu v javascripte

Vytváranie nových článkov

Opäť budete musieť vytvoriť novú funkciu, ktorá bude slúžiť ako úloha pri vytváraní tohto nového článku.

Začnime vytvorením | _+_ | fungovať v rámci nášho | _+_ | súbor.

http://localhost:10000/

S touto definovanou funkciou môžete teraz pridať trasu do zoznamu trás definovaných v rámci | _+_ | funkciu. Tentokrát však pridáme | _+_ | na koniec našej trasy, aby sme určili, že túto funkciu chceme zavolať iba vtedy, ak je prichádzajúca požiadavka | _+_ | požiadavka:

Welcome to the HomePage!

Skúste to znova spustiť a potom skúste odoslať | _+_ | žiadosť, ktorá obsahuje nasledujúce | _+_ | telo:

CREATE

Náš koncový bod spustí a následne ozve všetky hodnoty, ktoré boli v tele žiadosti.

Teraz, keď ste overili, že váš nový koncový bod funguje správne, aktualizujme naše | _+_ | funkciu tak, aby rozložila JSON v tele žiadosti na nový | _+_ | struct, ktorý je možné následne pripojiť k nášmu | _+_ | pole:

READ

Úžasné! Ak to teraz spustíte a odošlete to isté | _+_ | Ak odošlete požiadavku na svoju aplikáciu, uvidíte, že odzrkadľuje rovnaký formát JSON ako predtým, ale tiež nový článok pripojí k vášmu | _+_ | pole.

Potvrďte to teraz stlačením | _+_ |:

http: // localhost: 10 000/články odpoveď

UPDATE

Teraz ste úspešne pridali | _+_ | funkciu pre vaše nové REST API!

V ďalšej časti tohto tutoriálu sa pozriete na to, ako môžete pridať nový koncový bod API, ktorý vám umožní odstrániť články.

Vymazanie článkov

Niekedy môže byť potrebné odstrániť údaje, ktoré poskytuje vaše rozhranie REST API. Ak to chcete urobiť, musíte odhaliť | _+_ | koncový bod vo vašom API, ktorý prevezme identifikátor a odstráni všetko, čo je s týmto identifikátorom spojené.

V tejto časti tohto tutoriálu budete vytvárať ďalší koncový bod, ktorý dostane | _+_ | požaduje a odstráni články, ak sa zhodujú s daným | _+_ | parameter cesty.

Pridajte novú funkciu do svojho | _+_ | súbor, ktorý nazveme | _+_ |:

DELETE

Znova budete musieť pridať cestu k | _+_ | funkcia, ktorá mapuje túto novú | _+_ | funkcia:

CRUD

Skúste odoslať nový | _+_ | žiadosť | _+_ |. Odstráni sa tým druhý článok z poľa článkov a keď následne kliknete na | _+_ | s | _+_ | Mali by ste vidieť, že teraz obsahuje iba jeden | _+_ |.

Poznámka - Aby to bolo jednoduché, aktualizujeme globálnu premennú. Nerobíme však žiadne kontroly, aby sme sa uistili, že náš kód neobsahuje závodné podmienky. Aby bol tento kód bezpečný pre vlákna, odporúčam vám pozrieť si môj ďalší návod na Choď Mutexes ## Aktualizácia koncového bodu článkov

Konečný koncový bod, ktorý budete musieť implementovať, je aktualizačný koncový bod. Tento koncový bod bude | _+_ | koncový bod a bude musieť prijať | _+_ | parameter cesty, rovnako ako sme to urobili pre naše | _+_ | koncový bod, ako aj orgán žiadosti JSON.

Tento JSON v tele prichádzajúceho | _+_ | žiadosť bude obsahovať novšiu verziu článku, ktorý chceme aktualizovať.

Výzva

Skúste vytvoriť | _+_ | funkciu a zodpovedajúcu trasu v | _+_ | funkciu. Toto sa zhoduje s | _+_ | žiadosti. Akonáhle to budete mať, implementujte | _+_ | funkciu tak, aby analyzoval | _+_ | telo žiadosti pomocou rovnakého kódu, ktorý ste použili vo svojom | _+_ | funkciu.

Nakoniec budete musieť prejsť článkami vo vašom | _+_ | zoradiť a porovnať a následne článok aktualizovať.

Záver

Tento príklad predstavuje veľmi jednoduchý RESTful API napísané pomocou Choď . V skutočnom projekte by sme to zvyčajne spojili s databázou, aby sme vracali skutočné hodnoty.

#go #rest #api #vývoj webových aplikácií

tutorialedge.net

Vytvorenie jednoduchého RESTful API v Go

Tento tutoriál ukazuje, ako môžete vytvoriť jednoduché RESTful JSON api pomocou Go (Lang)

Pozri Tiež: