{"id":29585727,"url":"https://github.com/hendrixstring/node-okhttp","last_synced_at":"2025-07-20T02:16:41.015Z","repository":{"id":57314012,"uuid":"48074459","full_name":"HendrixString/node-okhttp","owner":"HendrixString","description":"Lightweight HTTP library for Node.js inspired by Square's OkHttp Builder patterns","archived":false,"fork":false,"pushed_at":"2017-04-18T21:26:40.000Z","size":71,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-03T14:47:26.151Z","etag":null,"topics":["http","node-okhttp","nodejs","okhttp"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/HendrixString.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-12-15T23:14:04.000Z","updated_at":"2023-05-03T11:48:55.000Z","dependencies_parsed_at":"2022-09-20T23:21:33.042Z","dependency_job_id":null,"html_url":"https://github.com/HendrixString/node-okhttp","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/HendrixString/node-okhttp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HendrixString%2Fnode-okhttp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HendrixString%2Fnode-okhttp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HendrixString%2Fnode-okhttp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HendrixString%2Fnode-okhttp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HendrixString","download_url":"https://codeload.github.com/HendrixString/node-okhttp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HendrixString%2Fnode-okhttp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266057350,"owners_count":23870131,"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","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":["http","node-okhttp","nodejs","okhttp"],"created_at":"2025-07-20T02:16:37.182Z","updated_at":"2025-07-20T02:16:41.007Z","avatar_url":"https://github.com/HendrixString.png","language":"JavaScript","readme":"# node-OkHttP   [![npm](https://img.shields.io/npm/dt/okhttp.svg)](https://www.npmjs.com/package/okhttp)  \na lightweight `HTTP` library for `Node.js` inspired by `Square's Android OkHttp` Builder patterns and flavours\nfor constructing a legit `HTTP` requests of all types.\nWritten entirely in EcmaScript 6 (Harmony) and transpiled with `Babel`.\n\n[![NPM](https://nodei.co/npm/okhttp.png?downloads=true\u0026downloadRank=true\u0026stars=true)](https://nodei.co/npm/okhttp/)\n\n## How to use\n- `npm install okhttp`\n- `npm install --production okhttp` (if you have the following modules installed globally `babel-cli, babel-plugin-transform-object-assign,babel-preset-es2015`,\nthen use)\n\n\n## Features\n- supports all `HTTP` methods.\n- supports MultiPart requests.\n- includes Builders for:\n  - `Request` builder.\n  - `Form Encoding` body builder.\n  - `Multipart` body builder.\n  - `Mime` builder.\n  - `Request Body` composer.\n- use `Promise` api for intuitive async.\n- most important: quick and easy to use.\n\n## Guide\n```javascript\nconst okhttp                = require('okhttp');\n\nvar MimeBuilder             = okhttp.MimeBuilder;\nvar Request                 = okhttp.Request;\nvar RequestBody             = okhttp.RequestBody;\nvar RequestBuilder          = okhttp.RequestBuilder;\nvar FormEncodingBuilder     = okhttp.FormEncodingBuilder;\nvar MultiPartBuilder        = okhttp.MultiPartBuilder;\n\n/**\n * @param msg a {data, response, request} Object\n */\nprivate function onComplete(msg):void {\n    console.log('data ' + msg.data + ', response ' + msg.response.statusCode + ', request ' + msg.request.method);\n}\n\nprivate function onError(err):void {\n    console.error(err);\n}\n\n```\n\n\n#### 1) Simple textual `GET` request\n\n```javascript\nnew RequestBuilder().GET('http://google.com').buildAndExecute().then(onComplete).catch(onError);\n\n```\n\n#### 2) Simple binary `GET` request\n- data returns as a buffer\n\n```javascript\nnew RequestBuilder().GET('http://maps.google.com/mapfiles/kml/pushpin/blue-pushpin.png').bufferResponse().buildAndExecute().then(onComplete).catch(onError);\n\n```\n\n#### 2) Simple `JSON POST` request\n\n```javascript\nnew RequestBuilder().url('http://httpbin.org/post')\n                    .POST(RequestBody.create({a:'a1', b:'b1'}, new MimeBuilder().contentType('application/json', 'charset', 'utf8').build()))\n                    .buildAndExecute().then(onComplete).catch(onError);\n\n```\n\n#### 3) `Form Encoding POST (www-form-urlencoded)` request\n\n```javascript\nlet fe_body = new FormEncodingBuilder().add('key1', 'value1').add('key2', 'value2').build();\n\nnew RequestBuilder().url('http://httpbin.org/post').POST(fe_body).buildAndExecute()\n                    .then(onComplete).catch(onError);\n\n```\n\n#### 4) `MultiPart` request: \n- send a multipart file upload request to Google Drive API\n- to obtain token, use [https://developers.google.com/oauthplayground/](https://developers.google.com/oauthplayground/)\n```javascript\nlet json    = JSON.stringify({title:'test'});\nvar image   = fs.readFileSync(path.resolve(__dirname, 'test.jpg'));\n\nlet mp_body = new MultiPartBuilder().addPart(RequestBody.create(json, 'Content-Type: application/json; charset=UTF-8'))\n                                    .addPart(RequestBody.create(image, new MimeBuilder().contentType('image/jpeg').contentTransferEncoding('binary').build()))\n                                    .type(MultiPartBuilder.FORMDATA).build();\n\nnew RequestBuilder().url('https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart')\n                    .header('Authorization', 'Bearer OAUTH2_TOKEN_HERE')\n                    .POST(mp_body).buildAndExecute().then(onComplete).catch(onError);\n\n```\n\n#### 5) `POST` image request\n- send an image into `Google Glass Mirror API`\n\n```javascript\npublic function uploadImage(image, itemId, oauthToken):void {\n\n      var body = RequestBody.create(image, 'Content-Type: image/png');\n      \n      new RequestBuilder().url(\"https://www.googleapis.com/upload/mirror/v1/timeline\" + \"/\" + itemId + \"/attachments\")\n                          .query(\"access_token\", oauthToken)\n                          .POST(body).build().execute()\n                          .then(onComplete).catch(onError);\n}\n\n```\n\n### Dev Dependencies\n* [`babel-cli`](https://github.com/babel/babel/tree/master/packages/babel-cli)\n* [`babel-preset-es2015`](https://github.com/babel/babel/tree/master/packages/babel-preset-es2015)\n* [`babel-plugin-transform-object-assign`](https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-object-assign)\n\n### Terms\n* completely free source code. [Apache License, Version 2.0.](http://www.apache.org/licenses/LICENSE-2.0)\n* if you like it -\u003e star or share it with others\n\n### Contact Author\n* [tomer.shalev@gmail.com](tomer.shalev@gmail.com)\n* [Google+ TomershalevMan](https://plus.google.com/+TomershalevMan/about)\n* [Facebook - HendrixString](https://www.facebook.com/HendrixString)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhendrixstring%2Fnode-okhttp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhendrixstring%2Fnode-okhttp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhendrixstring%2Fnode-okhttp/lists"}