顶级Go-Module: Golang-Web-APIs mit GORM

更新:我1。Mai 2021 wind das zentrale Repository von GoCenter einschließlich aller Funktionen eingestellt。Weitere Informationen zur einstein中心发现了他博客-爱因斯坦之歌

Jeden Monat verleht GoCenter den leistungsstärksten模块金花鼠徽章Auszeichnung(德国):请原谅我,我的朋友们Top-Module在Go verwendet werden找到了我们。

Robert greisimer说Go也死于云计算技术。他是weigger bekant ist,他是dass Go ,他是dass Go Funktionen verf gt,他是dass Go system,他是weigger bekant ist,他是dass Go von Anfang,他是dass Go von Anfang,他是dass auf die Webentwicklung erstellt wurde。在der der verwenden viele Entwickler In der Community Go f中,die Full-Stack-Entwicklung and beberworten new Module and Frameworks In中,die Go zu einer starken Sprache f为Web machen。

我们将继续为我们的社区服务Möglichkeiten,我们将继续为我们的社区服务Go-ModuleWeb-Apps中的Datenaustausch。Ich zeige auch, wie man mit GoCenter, dem kostenlosen go - Module - proxy f, die Entwicklergemeinde, ige wertvolle Module identififiienkann, and wertverinen detail - liderick aufinemeiner Favoriten。

Golang liebt Daten in Web

Go verggt 她的名字是Web-Pakete, die Teil seiner Kernbibliothek sind。Mit dem jngsten Golang 1.15-Release[翻译]荷兰Verbesserungen数据库/ sql数据库/ sql /司机net/http编码/ json实际上,sodass Go喷气机并没有比Web-Daten (Web-Daten)更强大。Diese Änderungen fgen bergrenzungen hinzu, die das Risiko einer Überbeanspruchung des Stapelspeichers durch groch ße Mengen von Datendiensten verringern。Außerdem wurde eine Leerlaufzeit f r datenbankverindungen festgelegt。

Web-Server-Erstellung

去的net/http-包传输列表提供标准目录,用于从服务器到客户端传输HTML。我的兄弟,我的兄弟http。处理程序schnittstelle, die ihren eigenen Webserver bildet。基于rest - api - entwicklung的数据处理方法,以及基于Go结构的数据处理方法(können big - data - endendungen)。

Zum Starten des Webdienstes msssen das net/http- packet import and zwei Funktionen geschrieben werden。

package main import ("fmt" "log" "net/http")ResponseWriter, r *http.Request){# # # # # # # # # # # # # # # # #Println("Endpunkt-Hit:主页")}func handlerrequests () {http。HandleFunc("/",主页)ListenAndServe(":10000", nil))}函数main() {handlerrequests ()}

本文介绍了如何增强Datei的功能,以及如何增强web服务器的功能。服务器发送,具体和ruft nat rich nicht tatsächlich Informationen aus dem Web和eine Datenbank ab. Um diese Funktionalität einzubauen, w rden wir eine grundlegende grd - anwendung erstellen, die Informationen in Ihrer APIERSTELLEN革命AKTUALISIERENLOSCHEN萤石。

Weitere Details zur Verwendung dieses Pakets f r die Erstellung von restful api erfahren Sie in einemausgezeichneten Tutorial von Elliot Forbes

JSON

e . Möglichkeit,信息与发展,信息与发展,信息与发展,信息与发展编码/ json。disese Bibliothek machitesinfach, Daten在Ihre - Go-Anwendungen zu lesen/schreiben中使用JSON。JSON order Javascript Object Notation (Javascript对象表记)同时,Web技术也对XML进行了限制。dch die Verwendung von key:value-Paaren - list . JSON . text . Datenformat . JSON . JSON . full - stack . anwendungen . JSON . SQL . vermeidet。Während JSON das Senden von Datenbank macht, wind interinterin eine Möglichkeit benötigt, um mit Datenbank wipostgresql zu preprechen。

Golang orm

SQL-Datenbank - PostgreSQL - map . SQL-Datenbank . SQL-Datenbank . SQL-Datenbank . sql . sql . sql . sql . sql . sql . sql . sql . sql . sql . sql . sql . sql . sql . sql . sql . sql . sql。ORMs ermöglichen es Entwicklern,其原生编程范式为verwenden,而Daten为SQL的映射。

在gorang - object和ungegehrt中,ORM全面介绍了数据银行信息。Bei der Arbeit miteinem ORM können Sie, SQL-Abfragen直接在i3 Anwendung zuschreiben, i3 Daten viper besser mitgolang结构在eem beispielabbilden。

//用户struct {{{}} {{}}模型firstName string lastName string电子邮件string消息string职业string年龄int zipCode int}

night jder ist in Fan der Verwendung von ORMs,我们将会看到Abstraktionsebene von den eigentlichen Daten in der Datenbank schaffen。Je nachdem, welche Bibliothek Sie verwenden, ist ein weiterer Nachteil, ass, während SQL lang - fristig bleibt, ORM-Frameworks ber Nacht erscheinen and verschwinden können。其中,数据库数据库有数据库数据库,数据库数据库有数据库数据库,数据库有数据库数据库,数据库有数据库数据库,数据库有数据库,数据库有数据库,数据库有数据库,数据库有数据库,数据库有数据库,数据库有数据库,数据库有数据库,数据库有数据库,数据库有数据库,数据库有数据库,数据库有数据库。

他的名字叫Reihe von Go-ORMs, die in der Community untersttzt und gefördert werden and alle im GoCenter verfgbar sind:

  • XORMEin infaches und leistungsfähiges ORM-Framework fgr Go
  • Go-PG在postgresql客户端和ORM数据库中
  • SQLBOILDERin Tool zur Erzeugung eines auhr Datenbankschema zugeschnittenen Go-ORM
  • SQLX:Kein ORM是一种基于SQL语言的工具

高姆:我是高地鼠

弄脏1 . in entwicklerfreundlicher ORMJinzhu张entwickelt wurde, mehr也19.000 Sterne auf GitHub hat, ausgezeichneten支持社区erhält和frden es eineleicht verständliche文档链接。GORM ermöglicht原油-操作与kann auch f r die anfängliche迁移与Erstellung des Datenbankschemas verwendet werden。zuden weiteren vorzgen von GORM gehören die Erweiterbarkeit mit本地插件- unterst tzung, der Einsatz von Tests sowie 1:1- bzw。1:n-Gruppen von associationen Gorm untersttzt außerdemsqlitemysqlpostgres和该软件。

disese functionen haben einen groen Anteil daran, dass das gorm - modules“Top-Gopher”在GoCenter ausgezeichnet wurde。Wenn Sie die reichhaltigen Metadaten von GoCenter ber das gorm - module betrachten, können Sie sehen, warum:

  • 自述des模块是最先进的、最先进的、最先进的文档。Mehr Details ber den Code des modules erfahren wir ber dieGoDoc-Registerkarte,自动生成通用文档和文件大小。
  • 所使用的——和指标-Registerkartenvon GoCenter zeigen, dass dieses module angesichts viper Downloads, Forks, Mitwirkenden and der Verwendung durch andere Go-Module believe and within vertrauenswrdig ist。
  • Security-Registerkartevon GoCenter的每一项重量,都有一个模块和过滤器Abhängigkeiten keine bekannten NVD-Schwachstellen aufweisenJFrog Xray-Tiefenscanbestatigt将。

GORM verwenden

Nehmen wir and, Sie wollten eine API(旧的später eine Webanwendung) erstellen, die Benutzer auffordert, Ihnen ihren Namen, 3 e - mail - address和einekurze Nachricht mitzuteilen。Mit GORM wäre es eine ziemlich einfache Reihe von Schritten, um dies in iner Datenbank abzubilden。死Schritte:

  • Einrichten Ihrer Datenbank
  • Abbilden iner用户结构
  • Verbinden mit derdb
  • Anfängliche迁移死亡db
  • Einrichten irer functionen
  • ausfhren der Anwendung

GORM Schritt; r Schritt

Nehmen wir and, dass meine teilzeit - immobilenmaklerin (old vielleicht meine Schwester) eine Webanwendung benötigt, die Anfragen zu immobilen, die sie in unserer Heimatstadt verwalet, sammeln and speichern kann。Das奥地利第一储蓄,是我桶应该,这是Datenbank祖entwickeln死Benutzerinformationen speichern萤石,和一张web api,死这Informationen乳房静脉Kontaktformular sammelt和争吵这汪汪汪Benutzerinformationen zugreifen萤石,该死您在浏览器einem gelesen了您能。我们的艺术是一门艺术,我们的艺术是一门艺术,我们的艺术是一门艺术。

模块导入

Zuerst können wir in unserermain.go-Datei unsere Module mit den folgenden behlen importieren:

$ export GOPROXY=https://gocenter。IO $ go get github.com/jinzhu/gorm $ go get github.com/mattn/go-sqlite3

DB-Verbindungsvariable

Erstellen Sie eine einffache变量f_r - datenbank:

var db *gorm.DB . var

用户结构

我们的模型定义包括:Golang结构、Namen des Benutzers、E-Mail和Nachricht abbildet。

//用户结构为我的数据库类型{gorm。模型名称字符串电子邮件字符串消息字符串

Anfängliche Migration f r DB

我有我的办公室——datenbankprojekt.dbgent and kann - auto - migration - function von GORM: n - function verwenden: n - function verwenden:

//项目的初始化迁移自动迁移函数InitialMigration() {db, err = gorm。Open("sqlite3", "project.db") if err != nil {fmt.Println(err. error ()) panic(" verindung zur Datenbank fehlgeschlagen")} defer db.Close() db.AutoMigrate(&User{})}

Handler-Funktion anzeigen

Dadurch können wir - die API-Daten在浏览器中显示:

函数viewHandler(writer)ResponseWriter, request *http.Request){占位符:= []byte("Erfolgreich mit der Datenbank verbunden…")_,err:= writer.Write(占位符)check(err)}

API-Funktion

Die API verwendet vier Hauptfunktionen, Die es uns ermöglichen, Benutzer zu finden/zu bekommen, neue Benutzer hinzuzuf, Benutzer zu löschen和Benutzerinformationen in der Datenbank zu aktualisieren。Diese können wie folgt unrissen werden:

  • 函数的权限
  • 函数分类列出
  • func deleteUser
  • func updateUser

这张Funktion stellt z。b .一杯Verbindung Datenbank这苏珥是她和zeigt阿莱Eintrage毛皮Benutzer安:

调用所有用户ResponseWriter, r *http.Request) {db, err:= gorm。Open("sqlite3", " project .db") if err != nil {panic(" ververindung zur Datenbank fehlgeschlagen")} defer db.Close() var users []Benutzer db.Find(&users) fmt。Println("{}", users) json.NewEncoder(w).Encode(users)}

路由器

Nachdem jede der obigen Funktionen erstellt wurde, wrde die Funktionen erstellt wurde, wrde die Funktionen rdas Routing - fugte aussehen:

function handlerrequests () {myRouter:= mux.NewRouter(). strictslash (true)HandleFunc("/users", allUsers). methods ("GET")HandleFunc("/user/{name}", deleteUser). methods ("DELETE")HandleFunc("/user/{name}/{email}", updateUser). methods ("PUT")HandleFunc("/user/{name}/{email}", newUser). methods ("POST")HandleFunc("/user/{name}/{email}/{message}", updateUser). methods ("PUT")HandleFunc("/user/{name}/{email}/{message}", newUser). methods ("POST") log.Fatal(http. fatal)ListenAndServe(":8081", myRouter))}

Hauptfunktion

Zuletzt können Sie die Anwendung ausfhren, indem Sie Folgendes in Ihrer hauptfunkfunction platzieren:

函数main() {fmt。Println("GORM API-Projekt gestartet") initialMigration() handlerrequests ()}

Anwendung ausfuhren

我想知道你是谁快跑,快跑反应:

GORM-API-Projekt gestartet

如果在浏览器中使用API POSTE,则可以在浏览器中使用API POSTE和API POSTE。

在thematheinauchen的Tiefer

《移民》、《人口迁移》、《人口普查》、《人口普查》、《人口普查》等。Der obige Code ist nur eine momentaufname, um Ihnen en einstitug zu erleichtern。

Weitere Informationen zurapi的研究进展找到她《福布斯》的视频教程晚安,再见艾略特·奥弗特中文:中文:中文:中文:中文:中文:中文:中文:中文:中文:中文:中文:中文:中文:英文。

GORM v2 list nun ebenfalls veröffentlicht and wind f r öffentliche测试verwendet。

Fazit

Zu den Stärken von Go in der Web-API-Entwicklung gehören seine Geschwindigkeit und Skalierbarkeit, was im Zeitalter des Machine Learning ziemlich wictiist。Go wurde in der Ära der Mehrkernprozessoren entwickelt und verwendetGoroutinen,呃Aufgaben gleichzetig durch mehrere Kanäle auf mehren cpu zu fhren。德国,德国,德国,德国,德国,德国,德国,德国,德国,德国,德国,德国,德国,德国,德国,德国。语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法语法。优步(Uber)的未来将会是未来的未来,未来的未来将会是未来的未来,未来的未来将会是未来的未来。

Sollten Sie die API-Fähigkeiten von Go ausprobieren wollen, ist die Erstellung - eigenen Web-API mit orm and GORM in the Anfang。