{"id":13634769,"url":"https://github.com/goji/goji","last_synced_at":"2026-01-20T04:36:04.216Z","repository":{"id":49750644,"uuid":"46243346","full_name":"goji/goji","owner":"goji","description":"Goji is a minimalistic and flexible HTTP request multiplexer for Go (golang)","archived":false,"fork":false,"pushed_at":"2022-07-26T04:51:22.000Z","size":70,"stargazers_count":972,"open_issues_count":6,"forks_count":66,"subscribers_count":40,"default_branch":"master","last_synced_at":"2025-11-12T03:41:16.567Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://goji.io","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/goji.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}},"created_at":"2015-11-16T00:52:41.000Z","updated_at":"2025-10-24T05:58:15.000Z","dependencies_parsed_at":"2022-08-26T16:11:14.993Z","dependency_job_id":null,"html_url":"https://github.com/goji/goji","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/goji/goji","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goji%2Fgoji","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goji%2Fgoji/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goji%2Fgoji/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goji%2Fgoji/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goji","download_url":"https://codeload.github.com/goji/goji/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goji%2Fgoji/sbom","scorecard":{"id":434148,"data":{"date":"2025-08-11","repo":{"name":"github.com/goji/goji","commit":"490b001d03d16a116d7c44d95d216c69a1aae798"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/30 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'","Warn: branch protection not enabled for branch 'net-context'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T04:10:45.171Z","repository_id":49750644,"created_at":"2025-08-19T04:10:45.171Z","updated_at":"2025-08-19T04:10:45.171Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28596081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T02:08:49.799Z","status":"ssl_error","status_checked_at":"2026-01-20T02:08:44.148Z","response_time":117,"last_error":"SSL_read: 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":[],"created_at":"2024-08-02T00:00:33.548Z","updated_at":"2026-01-20T04:36:04.195Z","avatar_url":"https://github.com/goji.png","language":"Go","readme":"Goji\n====\n\n[![GoDoc](https://godoc.org/goji.io?status.svg)](https://godoc.org/goji.io) [![Build Status](https://travis-ci.org/goji/goji.svg?branch=master)](https://travis-ci.org/goji/goji)\n\nGoji is a HTTP request multiplexer, similar to [`net/http.ServeMux`][servemux].\nIt compares incoming requests to a list of registered [Patterns][pattern], and\ndispatches to the [http.Handler][handler] that corresponds to the first matching\nPattern. Goji also supports [Middleware][middleware] (composable shared\nfunctionality applied to every request) and uses the standard\n[`context`][context] package to store request-scoped values.\n\n[servemux]: https://golang.org/pkg/net/http/#ServeMux\n[pattern]: https://godoc.org/goji.io#Pattern\n[handler]: https://golang.org/pkg/net/http/#Handler\n[middleware]: https://godoc.org/goji.io#Mux.Use\n[context]: https://golang.org/pkg/context\n\n\nQuick Start\n-----------\n\n```go\npackage main\n\nimport (\n        \"fmt\"\n        \"net/http\"\n\n        \"goji.io\"\n        \"goji.io/pat\"\n)\n\nfunc hello(w http.ResponseWriter, r *http.Request) {\n        name := pat.Param(r, \"name\")\n        fmt.Fprintf(w, \"Hello, %s!\", name)\n}\n\nfunc main() {\n        mux := goji.NewMux()\n        mux.HandleFunc(pat.Get(\"/hello/:name\"), hello)\n\n        http.ListenAndServe(\"localhost:8000\", mux)\n}\n```\n\nPlease refer to [Goji's GoDoc Documentation][godoc] for a full API reference.\n\n[godoc]: https://godoc.org/goji.io\n\n\nStability\n---------\n\nGoji's API was recently updated to use the new `net/http` and `context`\nintegration, and is therefore some of its interfaces are in a state of flux. We\ndon't expect any further changes to the API, and expect to be able to announce\nAPI stability soon. Goji is suitable for use in production.\n\nPrior to Go 1.7, Goji promised API stability with a different API to the one\nthat is offered today. The author broke this promise, and does not take this\nbreach of trust lightly. While stability is obviously extremely important, the\nauthor and community have decided to follow the broader Go community in\nstandardizing on the standard library copy of the `context` package.\n\nUsers of the old API can find that familiar API on the `net-context` branch. The\nauthor promises to maintain both the `net-context` branch and `master` for the\nforseeable future.\n\n\nCommunity / Contributing\n------------------------\n\nGoji maintains a mailing list, [gojiberries][berries], where you should feel\nwelcome to ask questions about the project (no matter how simple!), to announce\nprojects or libraries built on top of Goji, or to talk about Goji more\ngenerally. Goji's author (Carl Jackson) also loves to hear from users directly\nat his personal email address, which is available on his GitHub profile page.\n\nContributions to Goji are welcome, however please be advised that due to Goji's\nstability guarantees interface changes are unlikely to be accepted.\n\nAll interactions in the Goji community will be held to the high standard of the\nbroader Go community's [Code of Conduct][conduct].\n\n[berries]: https://groups.google.com/forum/#!forum/gojiberries\n[conduct]: https://golang.org/conduct\n","funding_links":[],"categories":["Web Frameworks","Food","Multiplexers","Web框架","Go","路由","Routers"],"sub_categories":["Routers","路由器","创建http中间件的代码库","Advanced Console UIs"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoji%2Fgoji","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoji%2Fgoji","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoji%2Fgoji/lists"}