V2EX 的帖子详情接口可以通过以下 URL 进行请求:
https://www.v2ex.com/api/topics/show.json?id={id}
其中,{id}
是帖子的 ID,可以通过浏览器访问帖子页面时 URL 中的 ID 获得。
该接口返回的是 JSON 格式的数据,包含了帖子的详细信息,例如标题、内容、创建时间、回复数、节点名称等。以下是一个示例 JSON 数据:
{ "id": 123456, "title": "这是一个示例帖子标题", "url": "https://www.v2ex.com/t/123456", "content": "这是一个示例帖子内容", "content_rendered": "<p>这是一个示例帖子内容</p>", "replies": 10, "created": 1614995656, "last_modified": 1614995656, "member": { "id": 123456, "username": "example", "avatar_mini": "//cdn.v2ex.com/avatar/123456.png?s=24&d=retro", "avatar_normal": "//cdn.v2ex.com/avatar/123456.png?s=48&d=retro", "avatar_large": "//cdn.v2ex.com/avatar/123456.png?s=73&d=retro" }, "node": { "id": 123, "name": "example", "title": "示例节点", "title_alternative": "Example Node", "url": "https://www.v2ex.com/go/example", "topics": 1234, "avatar_mini": "//cdn.v2ex.com/navatar/123456.png?s=24&d=retro", "avatar_normal": "//cdn.v2ex.com/navatar/123456.png?s=48&d=retro", "avatar_large": "//cdn.v2ex.com/navatar/123456.png?s=73&d=retro" } }
您可以使用 Go 的标准库中的 net/http
和 encoding/json
包发起 HTTP 请求,并解析返回的 JSON 数据。以下是一个示例代码:
package main import ( "encoding/json" "fmt" "net/http" ) type Topic struct { ID int `json:"id"` Title string `json:"title"` URL string `json:"url"` Content string `json:"content"` ContentRendered string `json:"content_rendered"` Replies int `json:"replies"` Created int64 `json:"created"` LastModified int64 `json:"last_modified"` Member struct { ID int `json:"id"` Username string `json:"username"` AvatarMini string `json:"avatar_mini"` AvatarNormal string `json:"avatar_normal"` AvatarLarge string `json:"avatar_large"` } `json:"member"` Node struct { ID int `json:"id"` Name string `json:"name"` Title string `json:"title"` TitleAlternative string `json:"title_alternative"` URL string `json:"url"` Topics int `json:"topics"` AvatarMini string `json:"avatar_mini"` AvatarNormal string `json:"avatar_normal"` AvatarLarge string `json:"avatar_large"` Header string `json:"header"` Footer string `json:"footer"` Created int64 `json:"created"` LastModified int64 `json:"last_modified"` Stars int `json:"stars"` Members int `json:"members"` OnlineMembers int `json:"online_members"` Description string `json:"description"` DescriptionRendered string `json:"description_rendered"` } `json:"node"` } func main() { id := 123456 // 帖子的 ID url := fmt.Sprintf("https://www.v2ex.com/api/topics/show.json?id=%d", id) resp, err := http.Get(url) if err != nil { // 处理错误 } defer resp.Body.Close() var topic Topic err = json.NewDecoder(resp.Body).Decode(&topic) if err != nil { // 处理错误 } // 打印帖子的标题和内容 fmt.Println(topic.Title) fmt.Println(topic.Content) }