🏷️ SearchPackagesByTags
通过标签(tags)搜索 Packagist 上的包,支持多标签与分页。
何时使用
🏷️ 按功能标签(如 http、psr-18)发现同领域包;🧩 构建「按标签浏览」的目录页;🎯 多标签组合做精确筛选。
签名
go
func (c *ComposerClient) SearchPackagesByTags(tags []string, perPage, page int) (*domain.SearchResponse, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
tags | []string | 标签列表,如 []string{"http", "psr-18"},多标签为 AND 关系 |
perPage | int | 每页结果数;传 0 或负数则不带 per_page 参数 |
page | int | 页码;传 0 或负数则不带 page 参数 |
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 结果 | *domain.SearchResponse | Results 为 []SearchResult,Total 为总数,Next 为下一页 URL |
| 错误 | error | HTTP 失败、非 200、JSON 解析失败时返回 |
对应端点:GET https://packagist.org/search.json?tags={t}&tags={t}。每个标签作为一个 tags 查询参数。
示例
go
package main
import (
"fmt"
"log"
"time"
"github.com/scagogogo/composer-skills/pkg/client"
)
func main() {
c := client.NewComposerClient(30 * time.Second)
resp, err := c.SearchPackagesByTags([]string{"http", "client"}, 15, 1)
if err != nil {
log.Fatal(err)
}
fmt.Printf("结果总数: %d\n", resp.Total)
for i, r := range resp.Results {
fmt.Printf("%2d. %s — %s\n", i+1, r.Name, r.Description)
}
}进阶
- 🔍 按自由关键词搜索用
SearchPackages。 - 🧩 按类型 + 关键词搜索用
SearchPackagesByType。 - 📦 拿到包名后取完整详情用
GetPackage。