7.7 http.Handler接口

第1章简单介绍了如何用net/http包来实现Web客户端(参考1.5节)和服务器(参考1.7节)。本节将进一步讨论服务端API,以及作为其基础的http.Handler接口。

ListenAndServe函数需要一个服务器地址,比如“localhost:8000”,以及一个Handler接口的实例(用来接受所有的请求)。这个函数会一直运行,直到服务出错(或者启动时就失败了)时返回一个非空的错误。

设想一个电子商务网站,使用一个数据库来存储商品和价格(以美元计价)的映射。如下程序将展示一个最简单的实现。它用一个map类型(命名为database)来代表仓库,再加上一个ServeHTTP方法来满足http.Handler接口。这个函数遍历整个map并且输出其中的元素:

如果启动服务器:

使用1.5节的fetch程序来连接服务器(也可以用Web浏览器),可以得到如下输出:

到现在为止,这个服务器只能列出所有的商品,而且是完全不管URL,对每个请求都是如此。一个更加真实的服务器会定义多个不同URL,每个触发不同的行为。我们把现有功能的URL设为/list,再加上另外一个/price用来显示单个商品的价格,商品可以在请求参数中指定,比如/price?item=socks: ...

Get Go程序设计语言 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.