使用 Go 构建您的第一个 REST API – 让我们开始吧!
那么,您已经听说过有关 Go 的热议,对吧?它快速、简单,基本上是当今后端开发的摇滚明星。如果您是 Go 新手或者只是想用它构建一些很酷的东西,那么您来对地方了。本周,我们将深入研究如何使用 Go 构建您自己的 REST API,所以系好安全带——这将是一次有趣的旅程!
为什么去?
现在,到底为什么这么多开发者对 Go 着迷呢?好吧,想象一下:谷歌工程师厌倦了等待他们的程序编译,决定创建一些不会让他们想要抓狂的东西。输入 Go——一种不仅可以完成工作,而且可以快速、轻松地完成工作的语言。
Go 是为当今的硬件而构建的,充分利用了多核系统。它的秘密武器? Goroutines——这些神奇的小型并发工作者,可以毫不费力地同时处理大量任务。无论您是在构建 Web 应用程序、API 还是微服务,Go 都能让一切顺利运行,就像您一直梦想的运转良好的机器一样。
最重要的是:Go 非常容易学。无论您是从 Python、Java 还是像 PHP 这样“经典”的东西切换过来,在说“Hello,World!”之前,您都将开始使用 Go 进行编码。而且它运行快——非常快。还需要我多说吗?
设置您的 Go 项目
好了,闲聊够了,让我们动手吧。首先,我们需要建立一个简单的 Go 项目。别担心,我已经帮你解决了:
确保已安装 Go。如果没有,请在这里获取。
现在,让我们创建一个项目目录并初始化项目:
mkdir go-rest-api cd go-rest-api go mod init github.com/yourusername/go-rest-api
- 在此目录中,创建一个名为 main.go 的新文件,并准备好进行一些编码魔法。
编写API
这就是事情变得令人兴奋的地方!我们将构建一个超级简单的 API 来管理书籍列表(因为谁不喜欢书籍?)。我们的 API 将具有以下端点:
- GET /books – 获取所有书籍(耶,书籍!)
- POST /books – 添加新书
- GET /books/:id – 通过 ID 获取特定书籍(因为并非所有书籍都是一样的)
准备好了吗?让我们深入研究代码:
package main import ( "encoding/json" "fmt" "log" "net/http" "strconv" "github.com/gorilla/mux" ) type Book struct { ID int `json:"id"` Title string `json:"title"` Author string `json:"author"` } var books []Book // Get all books func getBooks(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(books) } // Get a single book by ID func getBook(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id, err := strconv.Atoi(params["id"]) if err != nil { http.Error(w, "Invalid book ID", http.StatusBadRequest) return } for _, book := range books { if book.ID == id { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(book) return } } http.Error(w, "Book not found", http.StatusNotFound) } // Add a new book func createBook(w http.ResponseWriter, r *http.Request) { var book Book _ = json.NewDecoder(r.Body).Decode(&book) book.ID = len(books) + 1 // Assign an ID (we’re just winging it here) books = append(books, book) w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(book) } func main() { // Add some dummy data to start with books = append(books, Book{ID: 1, Title: "The Go Programming Language", Author: "Alan A. A. Donovan"}) books = append(books, Book{ID: 2, Title: "Learning Go", Author: "Jon Bodner"}) // Initialize the router r := mux.NewRouter() // Define the endpoints r.HandleFunc("/books", getBooks).Methods("GET") r.HandleFunc("/books/{id}", getBook).Methods("GET") r.HandleFunc("/books", createBook).Methods("POST") // Start the server fmt.Println("Server is running on port 8000...") log.Fatal(http.ListenAndServe(":8000", r)) }
分解它
- Mux Router:我们使用 gorilla/mux 来处理 API 中的路由。它可以轻松定义路由,并且是在 Go 中构建 Web 服务的首选。您可以使用以下命令安装它:
go get -u github.com/gorilla/mux
处理程序:我们设置了 getBooks、getBook 和 createBook 函数来处理 HTTP 请求。他们使用 Go 的 net/http 包来处理响应和数据编码/解码。简单!
JSON 编码:Go 内置的 json 包在这里完成繁重的工作,将我们的数据转换为 JSON 格式,以便客户端和 API 之间轻松通信。
运行 API
现在到了有趣的部分——让我们运行这个东西!在您的终端中,只需执行:
go run main.go
繁荣!您的 API 已启动并正在运行。您现在可以使用Postman或curl等工具来测试它:
- 获取所有书籍:
curl http://localhost:8000/books
- 获取一本特定的书:
curl http://localhost:8000/books/1
- 添加新书:
curl -X POST http://localhost:8000/books -d '{"title":"New Book","author":"New Author"}' -H "Content-Type: application/json"
接下来是什么?
这个小 API 只是 Go 在后端开发中的冰山一角。下周,我们将通过添加身份验证(是的,我们将采用完整的 JWT)并保护这些端点免受不需要的访问者的侵害来进行升级。
敬请关注第 2 部分——在 Go 中使用 JWT(JSON Web 令牌)在 REST API 中设置用于身份验证的中间件
以上是使用 Go 构建您的第一个 REST API的详细内容。更多信息请关注PHP中文网其他相关文章!

掌握Go语言中的strings包可以提高文本处理能力和开发效率。1)使用Contains函数检查子字符串,2)用Index函数查找子字符串位置,3)Join函数高效拼接字符串切片,4)Replace函数替换子字符串。注意避免常见错误,如未检查空字符串和大字符串操作性能问题。

你应该关心Go语言中的strings包,因为它能简化字符串操作,使代码更清晰高效。1)使用strings.Join高效拼接字符串;2)用strings.Fields按空白符分割字符串;3)通过strings.Index和strings.LastIndex查找子串位置;4)用strings.ReplaceAll进行字符串替换;5)利用strings.Builder进行高效字符串拼接;6)始终验证输入以避免意外结果。

thestringspackageingoisesential forefficientstringManipulation.1)itoffersSimpleyetpoperfulfunctionsFortaskSlikeCheckingSslingSubstringsStringStringsStringsandStringsN.2)ithandhishiCodeDewell,withFunctionsLikestrings.fieldsfieldsfieldsfordsforeflikester.fieldsfordsforwhitespace-fieldsforwhitespace-separatedvalues.3)3)

WhendecidingbetweenGo'sbytespackageandstringspackage,usebytes.Bufferforbinarydataandstrings.Builderforstringoperations.1)Usebytes.Bufferforworkingwithbyteslices,binarydata,appendingdifferentdatatypes,andwritingtoio.Writer.2)Usestrings.Builderforstrin

Go的strings包提供了多种字符串操作功能。1)使用strings.Contains检查子字符串。2)用strings.Split将字符串分割成子字符串切片。3)通过strings.Join合并字符串。4)用strings.TrimSpace或strings.Trim去除字符串首尾的空白或指定字符。5)用strings.ReplaceAll替换所有指定子字符串。6)使用strings.HasPrefix或strings.HasSuffix检查字符串的前缀或后缀。

使用Go语言的strings包可以提升代码质量。1)使用strings.Join()优雅地连接字符串数组,避免性能开销。2)结合strings.Split()和strings.Contains()处理文本,注意大小写敏感问题。3)避免滥用strings.Replace(),考虑使用正则表达式进行大量替换。4)使用strings.Builder提高频繁拼接字符串的性能。

Go的bytes包提供了多种实用的函数来处理字节切片。1.bytes.Contains用于检查字节切片是否包含特定序列。2.bytes.Split用于将字节切片分割成smallerpieces。3.bytes.Join用于将多个字节切片连接成一个。4.bytes.TrimSpace用于去除字节切片的前后空白。5.bytes.Equal用于比较两个字节切片是否相等。6.bytes.Index用于查找子切片在largerslice中的起始索引。

theEncoding/binarypackageingoisesenebecapeitProvidesAstandArdArdArdArdArdArdArdArdAndWriteBinaryData,确保Cross-cross-platformCompatibilitiational and handhandlingdifferentendenness.itoffersfunctionslikeread,写下,写,dearte,readuvarint,andwriteuvarint,andWriteuvarIntforPreciseControloverBinary


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。