freeCodeCamp/guide/chinese/go/receive-data-with-your-webs.../index.md

2.6 KiB
Raw Blame History

title localeTitle
Receive data with your web server 使用Web服务器接收数据

一旦设置了Web服务器并确保它可以提供一些有用的内容您可能希望通过让它接受数据来使其更具交互性。让我们开始编写一些代码

package main 
 
 import ( 
  "net/http" 
  "html/template" 
 ) 
 
 type PAGE struct { 
  NAME string 
 } 
 
 var page PAGE 
 
 func main() { 
  http.HandleFunc("/", servePage) 
  http.ListenAndServe(":8080", nil) 
 } 
 
 func servePage(writer http.ResponseWriter, reqest *http.Request) { 
  page.NAME = request.FormValue("name") 
  template := template.New("sayHello") 
  template, _ = template.Parse("Hello {{.NAME}}!") 
  template.Execute(writer, page) 
 } 

让我们打破这段代码吧。首先我们首先导入Web服务器的net/httphtml/template 。本文假设您已经知道如何在Go中模板。如果你还不知道你应该先阅读有关模板的文章。

然后我们创建一个名为PAGE的类型,其中有一个名为NAME插槽(这是一个string )。我们还创建了一个名为page的全局变量,它的类型为PAGE :我们刚刚创建的结构。

servePage函数中,有一件事对本文非常重要:我们在request上运行的FormValue方法。

在我们继续之前,您首先需要知道如何构建URL 。我们以下面的URL为例:

https://google.com/search?q=free+code+camp 

如果您在浏览器中输入上述URL 则会执行Google搜索free code camp搜索。 URL构建如下:

  1. https:// - 这是协议
  2. google.com - 这是域名和端口(在这种情况下没有提到端口 - 所以浏览器使用协议的默认端口)
  3. /search - 这是路径
  4. q=free+code+camp - 这是query

查询是我们在本文中讨论的部分。 Google服务器看到此URL并且由于查询中的属性qq的值 - 在这种情况下为free+code+camp - 它知道它应该搜索的位置。

我们也可以将它应用于我们的服务器。让我们启动程序并浏览浏览器:

http://localhost:8080/?name=world 

答复将是:

Hello world! 

这个怎么用?好吧,我们给FormValue一个name参数。这种方式FormValue知道我们想要查询中name属性的值。在这种情况下,这是world ,所以该方法返回world 。然后将该字符串放入page变量中,模板完成剩下的工作。

这当然是这个函数的一个非常简单的实现,但你可以用它做很多事情。例如:您可以接受电子邮件地址,并让程序将这些存储在文件中。