{"id":47796420,"url":"https://github.com/iotames/miniutils","last_synced_at":"2026-04-03T16:25:22.624Z","repository":{"id":62973569,"uuid":"563646737","full_name":"iotames/miniutils","owner":"iotames","description":"日常开发实用小工具。包含JWT工具，logger日志记录工具，HttpRequest网络请求工具等","archived":false,"fork":false,"pushed_at":"2024-07-12T03:25:19.000Z","size":51,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-07-12T04:35:05.246Z","etag":null,"topics":["go","golang","http-client","jwt","jwt-token","log","util","utilities","utility"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iotames.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-09T03:02:37.000Z","updated_at":"2024-07-12T03:25:22.000Z","dependencies_parsed_at":"2023-11-22T02:32:23.244Z","dependency_job_id":"53b4141c-3ef6-421d-aaa6-cf1c84bda037","html_url":"https://github.com/iotames/miniutils","commit_stats":{"total_commits":14,"total_committers":2,"mean_commits":7.0,"dds":0.0714285714285714,"last_synced_commit":"bef91b0421ea6f066ba2b6230c64fbc0fd9e5da5"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/iotames/miniutils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotames%2Fminiutils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotames%2Fminiutils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotames%2Fminiutils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotames%2Fminiutils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iotames","download_url":"https://codeload.github.com/iotames/miniutils/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotames%2Fminiutils/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31362723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T15:19:21.178Z","status":"ssl_error","status_checked_at":"2026-04-03T15:19:20.670Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","http-client","jwt","jwt-token","log","util","utilities","utility"],"created_at":"2026-04-03T16:25:22.086Z","updated_at":"2026-04-03T16:25:22.606Z","avatar_url":"https://github.com/iotames.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n   \u003cspan style=\"font-size:100px\"\u003e🧰\u003c/span\u003e\n  \u003cbr\u003e\u003ca href=\"https://github.com/iotames/miniutils\"\u003eGithub\u003c/a\u003e | \u003ca href=\"https://gitee.com/catmes/miniutils\"\u003eGitee\u003c/a\u003e\n  \u003cbr\u003e入门级，简单，易用的Go小工具\u003cbr\u003e助你成功转职Golang工程师！\n\u003c/div\u003e\n\n\n## 简介\n\n[![GoDoc](https://badgen.net/badge/Go/referenct)](https://pkg.go.dev/github.com/iotames/miniutils)\n[![License](https://badgen.net/badge/License/MIT/green)](https://github.com/iotames/miniutils/blob/main/LICENSE)\n\nGo实用小工具: 封装了高效开发的常用工具、函数集，简单易用。\n\n\n## 快速开始\n\n```\n# 创建本地项目 myproject\ngo mod init myproject\n# 新建入口文件 main.go\nvim main.go\n```\n\n入口文件 `main.go`\n\n```\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/iotames/miniutils\"\n)\n\nfunc main() {\n    strfind := miniutils.NewStrfind(\"https://d.168.com/offer/356789.html\")\n\tdofind := strfind.SetRegexp(`offer/(\\d+)\\.html`).DoFind()\n\tfmt.Println(dofind.GetOne(false)) // \"356789\"\n\tfmt.Println(dofind.GetOne(true)) // \"offer/356789.html\"\n}\n```\n\n```\n# 更新依赖\ngo mod tidy\n# 运行\ngo run .\n```\n\n## 示例\n\n[测试样例](/utils_test.go)\n\n### JWT 工具\n\n`JWT`: 全称JSON Web Token，互联网API通讯接口身份验证的行业标准。通过JWT字符串的解密和验签，进行用户身份认证。参见: https://jwt.io/\n\n```\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"time\"\n\t\"github.com/iotames/miniutils\"\n)\n\nfunc main() {\n\tsecret := miniutils.GetRandString(32) // 设置JWT签名密钥\n\tjwt := miniutils.NewJwt(secret) // 初始化JWT小工具\n\tjwtInfo := map[string]interface{}{\"id\": 1519512704946016256, \"name\": \"Harvey\", \"age\": 16, \"mobile\": \"15988888888\"}\n\t// 设置原始数据jwtInfo，有效期3600秒，创建JWT字符串tokenStr\n\ttokenStr, err := jwt.Create(jwtInfo, time.Second*3600)\n\tif err != nil {\n\t\tfmt.Printf(\"jwt.Create error: %v\", err)\n        return\n\t}\n\tlog.Println(\"create JWT:\", tokenStr)\n\t// 解码 JWT 字符串. 返回 map[string]interface{} 格式的数据。\n\tinfo, err := miniutils.NewJwt(\"\").Decode(tokenStr)\n\tif err != nil {\n\t\tfmt.Printf(\"jwt.Decode error: %v\", err)\n        return\n\t}\n\tlog.Println(\"jwt Decode:\", info)\n\t// 解码 JWT 字符串并验签，验证有效期。 返回 map[string]interface{} 格式的数据。\n\tclaims, err := jwt.Parse(tokenStr)\n\tif err != nil {\n\t\tfmt.Printf(\"jwt.Parse error: %v\", err)\n        return\n\t}\n\tlog.Println(\"jwt Parse:\", claims)\n    \n    _, err = jwt.Parse(tokenStr + \"sign error\")\n\tif err == miniutils.ErrTokenSign {\n\t\tfmt.Printf(\"JWT 签名错误\")\n\t}\n}\n```\n\n### 日志记录\n\n```\n\tlogger := miniutils.GetLogger(\"\")\n\tlogger.Debug(\"first log 11111\")\n\tlogger.Info(\"second log 22222\")\n\tlogger = miniutils.NewLogger(\"runtime/mylogs\")\n\tlogger.Debug(\"my logs 2333\")\n\tlogger.CloseLogFile()\n```\n\n### 字符串提取工具\n\n```\n    strfind := miniutils.NewStrfind(\"https://d.168.com/offer/356789.html\")\n\tdofind := strfind.SetRegexp(`offer/(\\d+)\\.html`).DoFind()\n\tfmt.Println(dofind.GetOne(false)) // \"356789\"\n\tfmt.Println(dofind.GetOne(true)) // \"offer/356789.html\"\n```\n\n### HTTP请求工具\n\n```\n\t// 构建HTTP请求(默认GET方法)\n    req := miniutils.NewHttpRequest(\"https://httpbin.org/get\")\n\t// 设置HTTP请求头\n\treq.SetRequestHeader(\"user-agent\", \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/533.33\")\n\t// 执行HTTP请求\n\terr := req.Do(nil)\n\tif err != nil {\n\t\tlog.Println(err)\n\t}\n\t// 打印响应内容消息体\n\tlog.Println(string(req.BodyBytes))\n\n\treq = miniutils.NewHttpRequest(\"https://httpbin.org/post\")\n\t// 构建POST请求\n\treq.SetRequestPostByString(\"hello=word\u0026some=2333\")\n\t// 执行HTTP请求\n\treq.SetRequestHeader(\"xkey\", \"secretttkeyyy\")\n\terr = req.Do(nil)\n\tif err != nil {\n\t\tlog.Printf(\"request post do err (%v) \\n\", err)\n\t}\n\t// 打印HTTP响应对象\n\tlog.Println(*req.Response)\n\n\t// 下载图片到本地\n\tminiutils.NewHttpRequest(\"https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png\").Download(\"runtime/baidu.png\")\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiotames%2Fminiutils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiotames%2Fminiutils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiotames%2Fminiutils/lists"}