{"id":15056588,"url":"https://github.com/http-builder-ng/http-builder-ng","last_synced_at":"2025-10-04T16:31:44.289Z","repository":{"id":46096135,"uuid":"65586420","full_name":"http-builder-ng/http-builder-ng","owner":"http-builder-ng","description":"The easy HTTP client for Groovy (and Java).","archived":true,"fork":false,"pushed_at":"2022-01-04T07:30:40.000Z","size":21842,"stargazers_count":178,"open_issues_count":25,"forks_count":44,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-06-04T17:13:40.072Z","etag":null,"topics":["dormant","groovy","http-builder-ng","java"],"latest_commit_sha":null,"homepage":"https://http-builder-ng.github.io/http-builder-ng/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/http-builder-ng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-12T22:12:16.000Z","updated_at":"2025-05-01T12:54:54.000Z","dependencies_parsed_at":"2022-08-12T12:40:33.521Z","dependency_job_id":null,"html_url":"https://github.com/http-builder-ng/http-builder-ng","commit_stats":null,"previous_names":["dwclark/http-builder-ng"],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/http-builder-ng/http-builder-ng","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/http-builder-ng%2Fhttp-builder-ng","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/http-builder-ng%2Fhttp-builder-ng/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/http-builder-ng%2Fhttp-builder-ng/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/http-builder-ng%2Fhttp-builder-ng/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/http-builder-ng","download_url":"https://codeload.github.com/http-builder-ng/http-builder-ng/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/http-builder-ng%2Fhttp-builder-ng/sbom","scorecard":{"id":471222,"data":{"date":"2025-08-11","repo":{"name":"github.com/http-builder-ng/http-builder-ng","commit":"3f97e2278d6d2e71a3d16c0561146d8f096e9f70"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"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":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Code-Review","score":3,"reason":"Found 11/28 approved changesets -- score normalized to 3","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":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"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":"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":"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":"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":"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":"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.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 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-19T13:56:14.173Z","repository_id":46096135,"created_at":"2025-08-19T13:56:14.173Z","updated_at":"2025-08-19T13:56:14.173Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278342655,"owners_count":25971396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["dormant","groovy","http-builder-ng","java"],"created_at":"2024-09-24T21:53:46.410Z","updated_at":"2025-10-04T16:31:43.894Z","avatar_url":"https://github.com/http-builder-ng.png","language":"Java","readme":"# HttpBuilder-NG: Easy HTTP Client for Groovy (and Java)\n\n[![Bintray - Core](https://api.bintray.com/packages/http-builder-ng/dclark/httpbuilder-ng-core/images/download.svg)](https://bintray.com/http-builder-ng/dclark/httpbuilder-ng-core \"Core Library\")\n[![Bintray - Apache](https://api.bintray.com/packages/http-builder-ng/dclark/httpbuilder-ng-apache/images/download.svg)](https://bintray.com/http-builder-ng/dclark/httpbuilder-ng-apache \"Apache Library\")\n[![Bintray - OkHttp](https://api.bintray.com/packages/http-builder-ng/dclark/httpbuilder-ng-okhttp/images/download.svg)](https://bintray.com/http-builder-ng/dclark/httpbuilder-ng-okhttp \"OkHttp Library\")\n\n[![Maven Central - Core](https://maven-badges.herokuapp.com/maven-central/io.github.http-builder-ng/http-builder-ng-core/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.http-builder-ng/http-builder-ng-core) \n[![Maven Central - Apache](https://maven-badges.herokuapp.com/maven-central/io.github.http-builder-ng/http-builder-ng-apache/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.http-builder-ng/http-builder-ng-apache) \n[![Maven Central - OkHttp](https://maven-badges.herokuapp.com/maven-central/io.github.http-builder-ng/http-builder-ng-okhttp/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.http-builder-ng/http-builder-ng-okhttp) \n\n[![Travis Build Status](https://travis-ci.org/http-builder-ng/http-builder-ng.svg?branch=master)](https://travis-ci.org/http-builder-ng/http-builder-ng)\n[![Coverage Status](https://coveralls.io/repos/github/http-builder-ng/http-builder-ng/badge.svg?branch=master)](https://coveralls.io/github/http-builder-ng/http-builder-ng?branch=master)\n\n[![Twitter Follow](https://img.shields.io/twitter/follow/httpbuilderng.svg?style=social\u0026label=Follow)]()\n\n\u003e **Dormant** - The HttpBuilder-NG project is going dormant. Neither of us use the project any longer nor do we have the extra time to properly maintain it. Please feel free to fork it and move it forward, or contact us (with an issue) to discuss options for taking over the project.\n\n## Quick Links for the Impatient\n\n* Site: https://http-builder-ng.github.io/http-builder-ng/\n* User Guide: https://http-builder-ng.github.io/http-builder-ng/asciidoc/html5/\n* JavaDocs: https://http-builder-ng.github.io/http-builder-ng/docs/javadoc/\n* Project: https://github.com/http-builder-ng/http-builder-ng\n* Twitter: [@HttpBuilderNG](https://twitter.com/HttpBuilderNG)\n* StackOverflow: [httpbuilder-ng](http://stackoverflow.com/questions/tagged/httpbuilder-ng)\n\n## Quick Overview\n\nHttp Builder NG is a modern Groovy DSL for making http requests. It requires Java 8 and a modern Groovy. It is built against Groovy 2.4.x, but it doesn't make any assumptions about which version of Groovy you are using. The main goal of Http Builder NG is to allow you to make http requests in a natural and readable way. For example:\n\n```groovy\n//let's configure an http client to make calls to httpbin.org using the default http library\ndef httpBin = HttpBuilder.configure {\n    request.uri = 'http://httpbin.org/'\n}\n\n//now let's GET /get endpoint at httpbin.\n//This will return a JSON formatted response with an origin property.\ndef result = httpBin.get {\n    request.uri.path = '/get'\n}\n    \nprintln(\"Your ip address is: ${result.origin}\")\n\n//Finally lets post a standard http form to httpbin\nhttpBin.post {\n    request.uri.path = '/post'\n    request.body = [ input1: 'the first input', input2: 'the second input' ]\n    request.contentType = 'application/x-www-form-urlencoded'\n}\n\n```\n\nHopefully that gives you a general idea of how Http Builder NG works. Http Builder NG is designed to be compatible with Groovy code annotated with [@TypeChecked](http://docs.groovy-lang.org/latest/html/gapi/groovy/transform/TypeChecked.html) and [@CompileStatic](http://docs.groovy-lang.org/latest/html/gapi/groovy/transform/CompileStatic.html). It also makes use of the [@DelegatesTo](http://docs.groovy-lang.org/latest/html/gapi/groovy/lang/DelegatesTo.html) to provide better IDE support when writing code using Http Builder NG.\n\n## Artifacts\n\nHttp Builder NG artifacts are available on [Bintray](https://bintray.com/http-builder-ng/dclark/http-builder-ng) and Maven Central, for Gradle you can add the following dependency to your `build.gradle` file `dependencies` closure:\n\n    compile 'io.github.http-builder-ng:http-builder-ng-CLIENT:1.0.4'\n    \nor, for Maven add the following to your `pom.xml` file:\n\n    \u003cdependency\u003e\n      \u003cgroupId\u003eio.github.http-builder-ng\u003c/groupId\u003e\n      \u003cartifactId\u003ehttp-builder-ng-CLIENT\u003c/artifactId\u003e\n      \u003cversion\u003e1.0.4\u003c/version\u003e\n    \u003c/dependency\u003e\n    \nwhere `CLIENT` is replaced with the client library name (`core`, `apache`, or `okhttp`).\n\n## Build Instructions\n\nHttpBuilder-NG is built using [gradle](https://gradle.org). To perform a complete build run the following:\n\n    `./gradlew clean build`\n\nTest reports are not automatically generated; if you need a generated test report (aggregated or per-project) use:\n\n    `./gradlew clean build jacocoTestReport aggregateCoverage`\n    \nNote that the `aggregateCoverage` task may be dropped if the aggregated report is not desired. The reports will be generated in their respective `build/reports` directories, with the aggregated report being in the `build` directory of the project root.\n\nYou can also generate the documentation using one of the following commands:\n\n* For the aggregated JavaDocs: `./gradlew aggregateJavaDoc`\n* For the project User Guide: `./gradlew asciidoctor`\n\nOverall project documentation may also be generated as the project web site, using the `site` task, discussed in the next section.\n\n## Documentation\n\nThe documentation for the project consists of:\n\n* [Web site](https://http-builder-ng.github.io/http-builder-ng/) - landing page and general introduction (`src/site` directory).\n* [User Guide](https://http-builder-ng.github.io/http-builder-ng/asciidoc/html5/) - getting started, examples and detailed usage information (`src/docs/asciidoc` directory).\n* [JavaDocs](https://http-builder-ng.github.io/http-builder-ng/docs/javadoc) - unified API documentation (throughout the codebase).\n* [Test](https://http-builder-ng.github.io/http-builder-ng/reports/allTests), [Coverage](https://http-builder-ng.github.io/http-builder-ng/reports/jacoco/aggregateCoverage/html) \u0026 Quality reports - misc build and quality reports\n\nThe documentation is provided by a unified documentation web site, which can be generated using:\n\n    ./gradlew site\n    \nThis task uses the [com.stehno.gradle.site](http://cjstehno.github.io/gradle-site/) plugin to aggregate all the documentation sources and generate the project web site. Once it is built, you can verify the generated content by running a local server:\n\n    ./gradlew startPreview\n    \nwhich will start a preview server (see [com.stehno.gradle.webpreview](http://cjstehno.github.io/gradle-webpreview-plugin/)) on a random port copied to your clipboard. \n\nTo stop the preview server run:\n\n    ./gradlew stopPreview`\n\nOnce you are ready to publish your site, simply run the following task:\n\n    ./gradlew publishSite\n    \nThis task will push the site contents into the `gh-pages` branch of the project, assuming you have permissions to push content into the repo.\n\n## Artifact Release\n    \nWhen ready to release a new version of the project, perform the following steps starting in the `development` branch:\n\n1. Ensure that the project version (in `build.gradle`) has been updated to the desired version.\n1. Run `./gradlew updateVersion -Pfrom=OLD_VERSION` to update the documented version.\n1. Create a Pull Request from `development` to `master` and accept it or have it reviewed.\n\nOnce the pull request has been merged into `master`, checkout the `master` branch and:\n\n1. Run `./gradlew release` which will check the documented project version against the project version, publish the artifact and the documentation web site. \n   * You will need to provide (or have configured in your `HOME/.gradle/gradle.properties` file):\n     * `user` - the Bintray username\n     * `key` - the Bintray key/password\n     * `sonotypeUser` - the Sonotype username (from API key)\n     * `sonotypePass` - the Sonotype password (from API key)\n   * This step may take some time (on the order of a minute or two depending on server response times).\n2. Manually confirm the publication of the new artifact on the Bintray web site (or the publication will expire) - this step may no longer be needed, but verify anyway.\n3. Run `./gradlew verifyRelease`  to ensure that the artifacts and site have been published (optional but recommended).\n4. A Git tag should be created for the released version.\n\nThe `development` branch may now be used for the next round of development work.\n\n\u003e NOTE: Since the artifacts must be confirmed and the site may need some installation time, the `verifyRelease` task cannot be combined with the `release` task.\n\n## Version Updates\n\nWhen updating the version of the project, the documented version should also be updated using the `updateVersion` task. Modify the version in the project `build.gradle` file and make note of the existing version then run:\n\n    ./gradlew updateVersion -Pfrom=OLD_VERSION\n    \nwhere `OLD_VERSION` is the pre-existing version of the project. This will update the current version mentioned in the documentation (e.g. README, User Guide and site).\n\n## History\n\nHttp Builder NG was forked from the HTTPBuilder project originally developed by Thomas Nichols. It was later passed on to Jason Gritman who maintained it for several years.\n\nThe original intent of Http Builder NG was to fix a few bugs and add a slight enhancement to the original HTTPBuilder project. The slight enhancement was to make HTTPBuilder conform to more modern Groovy DSL designs. However, it was not possible to update the original code to have a more modern typesafe DSL while preserving backwards compatibility. I decided to just make a clean break and give the project a new name to make it clear that Http Builder NG is basically a complete re-write and re-architecture.\n\n# License\n\n```\nCopyright 2017 HttpBuilder-Project\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\n# Original Project\n\n[jgritman/httpbuilder](https://github.com/jgritman/httpbuilder)\n","funding_links":[],"categories":["HTTP","网络编程"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhttp-builder-ng%2Fhttp-builder-ng","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhttp-builder-ng%2Fhttp-builder-ng","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhttp-builder-ng%2Fhttp-builder-ng/lists"}