{"id":22840965,"url":"https://github.com/mkloubert/vscode-http-client","last_synced_at":"2025-04-28T10:50:32.487Z","repository":{"id":42361593,"uuid":"131406973","full_name":"mkloubert/vscode-http-client","owner":"mkloubert","description":"Simple way to do HTTP requests in Visual Studio Code.","archived":false,"fork":false,"pushed_at":"2022-12-07T18:01:53.000Z","size":6467,"stargazers_count":28,"open_issues_count":24,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-04-13T16:26:03.153Z","etag":null,"topics":["client","gui","http","https","javascript","nodejs","vscode-extension","webview"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=mkloubert.vscode-http-client","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkloubert.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":["https://paypal.me/MarcelKloubert"]}},"created_at":"2018-04-28T12:18:52.000Z","updated_at":"2024-01-23T15:05:16.000Z","dependencies_parsed_at":"2023-01-24T20:15:11.427Z","dependency_job_id":null,"html_url":"https://github.com/mkloubert/vscode-http-client","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkloubert%2Fvscode-http-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkloubert%2Fvscode-http-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkloubert%2Fvscode-http-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkloubert%2Fvscode-http-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkloubert","download_url":"https://codeload.github.com/mkloubert/vscode-http-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229474529,"owners_count":18078717,"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":["client","gui","http","https","javascript","nodejs","vscode-extension","webview"],"created_at":"2024-12-13T01:14:05.107Z","updated_at":"2024-12-13T01:14:05.589Z","avatar_url":"https://github.com/mkloubert.png","language":"TypeScript","readme":"# vscode-http-client\n\n[![Share via Facebook](https://raw.githubusercontent.com/mkloubert/vscode-http-client/master/img/share/Facebook.png)](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-http-client\u0026quote=HTTP%20Client) [![Share via Twitter](https://raw.githubusercontent.com/mkloubert/vscode-http-client/master/img/share/Twitter.png)](https://twitter.com/intent/tweet?source=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-http-client\u0026text=HTTP%20Client:%20https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-http-client\u0026via=mjkloubert) [![Share via Google+](https://raw.githubusercontent.com/mkloubert/vscode-http-client/master/img/share/Google+.png)](https://plus.google.com/share?url=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-http-client) [![Share via Pinterest](https://raw.githubusercontent.com/mkloubert/vscode-http-client/master/img/share/Pinterest.png)](http://pinterest.com/pin/create/button/?url=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-http-client\u0026description=Visual%20Studio%20Code%20extension%2C%20which%20receives%20and%20shows%20git%20events%20from%20webhooks.) [![Share via Reddit](https://raw.githubusercontent.com/mkloubert/vscode-http-client/master/img/share/Reddit.png)](http://www.reddit.com/submit?url=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-http-client\u0026title=HTTP%20Client) [![Share via LinkedIn](https://raw.githubusercontent.com/mkloubert/vscode-http-client/master/img/share/LinkedIn.png)](http://www.linkedin.com/shareArticle?mini=true\u0026url=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-http-client\u0026title=HTTP%20Client\u0026summary=Visual%20Studio%20Code%20extension%2C%20which%20receives%20and%20shows%20git%20events%20from%20webhooks.\u0026source=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-http-client) [![Share via Wordpress](https://raw.githubusercontent.com/mkloubert/vscode-http-client/master/img/share/Wordpress.png)](http://wordpress.com/press-this.php?u=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-http-client\u0026quote=HTTP%20Client\u0026s=Visual%20Studio%20Code%20extension%2C%20which%20receives%20and%20shows%20git%20events%20from%20webhooks.) [![Share via Email](https://raw.githubusercontent.com/mkloubert/vscode-http-client/master/img/share/Email.png)](mailto:?subject=HTTP%20Client\u0026body=Visual%20Studio%20Code%20extension%2C%20which%20receives%20and%20shows%20git%20events%20from%20webhooks.:%20https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-http-client)\n\n\n[![Latest Release](https://vsmarketplacebadge.apphb.com/version-short/mkloubert.vscode-http-client.svg)](https://marketplace.visualstudio.com/items?itemName=mkloubert.vscode-http-client)\n[![Installs](https://vsmarketplacebadge.apphb.com/installs/mkloubert.vscode-http-client.svg)](https://marketplace.visualstudio.com/items?itemName=mkloubert.vscode-http-client)\n[![Rating](https://vsmarketplacebadge.apphb.com/rating-short/mkloubert.vscode-http-client.svg)](https://marketplace.visualstudio.com/items?itemName=mkloubert.vscode-http-client#review-details)\n\nSimple way to do [HTTP requests](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol) in [Visual Studio Code](https://code.visualstudio.com/).\n\n![Demo 1](https://raw.githubusercontent.com/mkloubert/vscode-http-client/master/img/demo1.gif)\n\n## Table of contents\n\n1. [Install](#install-)\n2. [How to use](#how-to-use-)\n   * [Settings](#settings-)\n   * [How to execute](#how-to-execute-)\n     * [Execute scripts](#execute-scripts-)\n       * [Constants](#constants-)\n         * [cancel](#cancel-)\n         * [output](#output-)\n         * [progress](#progress-)\n       * [Functions](#functions-)\n         * [alert](#alert-)\n         * [decode_html](#decode_html-)\n         * [encode_html](#encode_html-)\n         * [from](#from-)\n         * [guid](#guid-)\n         * [new_request](#new_request-)\n         * [now](#now-)\n         * [open_html](#open_html-)\n         * [open_markdown](#open_markdown-)\n         * [sleep](#sleep-)\n         * [uuid](#uuid-)\n         * [utc](#utc-)\n       * [Modules](#modules-)\n3. [Enhancements](#enhancements-)\n   * [Authorization](#authorization-)\n     * [Basic Auth](#basic-auth-)\n4. [HTTP files](#http-files-)\n5. [Customizations](#customizations-)\n   * [CSS](#css-)\n6. [Syntaxes](#syntaxes-)\n7. [Support and contribute](#support-and-contribute-)\n8. [Related projects](#related-projects-)\n   * [node-enumerable](#node-enumerable-)\n   * [vscode-helpers](#vscode-helpers-)\n\n## Install [[\u0026uarr;](#table-of-contents)]\n\nLaunch VS Code Quick Open (`Ctrl + P`), paste the following command, and press enter:\n\n```bash\next install vscode-http-client\n```\n\nOr search for things like `vscode-http-client` in your editor.\n\n## How to use [[\u0026uarr;](#table-of-contents)]\n\n### Settings [[\u0026uarr;](#how-to-use-)]\n\nOpen (or create) your `settings.json` in your `.vscode` subfolder of your workspace or edit the global settings (`File \u003e\u003e Preferences \u003e\u003e Settings`).\n\nAdd a `http.client` section:\n\n```json\n{\n    \"http.client\": {\n    }\n}\n```\n\n| Name | Description |\n| ---- | --------- |\n| `open` | An array of one or more paths to `.http-request` files, which should be opened on startup. |\n| `openNewOnStartup` | `(true)`, if a new tab with an empty request should be opened on startup. Default: `(false)` |\n| `rejectUnauthorized` | `(true)`, to reject unauthorized, self-signed SSL certificates. Default: `(false)` |\n\n### How to execute [[\u0026uarr;](#how-to-use-)]\n\nPress `F1` and enter one of the following commands:\n\n| Name | Description | command |\n| ---- | --------- | --------- |\n| `HTTP Client: Change style ...` | Changes the CSS style for request forms. | `extension.http.client.changeStyle` |\n| `HTTP Client: Create new script ...` | Opens a new editor with an example script. | `extension.http.client.newRequestScript` |\n| `HTTP Client: New HTTP request ...` | Opens a new HTTP request form. | `extension.http.client.newRequest` |\n| `HTTP Client: New HTTP request (split view) ...` | Opens a new HTTP request form by splitting the current view. | `extension.http.client.newRequestSplitView` |\n| `HTTP Client: Send editor content as HTTP request ...` | Uses the content of a visible editor as body for a HTTP request. | `extension.http.client.newRequestForEditor` |\n| `HTTP Client: Send file as HTTP request ...` | Uses a (local) file as body for a HTTP request. | `extension.http.client.newRequestFromFile` |\n| `HTTP Client: Show help ...` | Shows a new help tab. | `extension.http.client.showHelp` |\n\nThere are currently no predefined key bindings for these commands, but you can setup them [by your own](https://code.visualstudio.com/docs/getstarted/keybindings).\n\n#### Execute scripts [[\u0026uarr;](#how-to-execute-)]\n\nFor things, like batch operations, you can execute scripts, using the [Node.js API](https://nodejs.org/en/), which is provided by VS Code.\n\n![Demo 2](https://raw.githubusercontent.com/mkloubert/vscode-http-client/master/img/demo2.gif)\n\n```javascript\nconst USERS = [{\n    id: 5979,\n    name: 'TM'\n}, {\n    id: 23979,\n    name: 'MK'\n}];\n\nconst SESSION_ID = uuid();\nconst CURRENT_TIME = utc();\n\n// show output channel\noutput.show();\n\nfor (let i = 0; i \u003c USERS.length; i++) {\n    if (cancel.isCancellationRequested) {\n        break;  // user wants to cancel\n    }\n    \n    const U = USERS[i];\n\n    try {\n        output.append(`Sending request for '${ U }' ... `);\n\n        const REQUEST = new_request();\n\n        // do not show any result\n        // in the GUI\n        // this is good, if you do many requests\n        REQUEST.noResult(true);\n\n        REQUEST.param('user', U.id)  // set / overwrite an URL / query parameter           \n               .header('X-User-Name', U.name)  // set / overwrite a request header\n               .header('X-Date', CURRENT_TIME)  // automatically converts to ISO-8601\n               .header('X-Session', SESSION_ID)\n               .body( await $fs.readFile('/path/to/bodies/user_' + U.id + '.json') );  // set / overwrite body\n\n        // you can also use one of the upper setters\n        // as getters\n        if ('MK' === REQUEST.header('X-User-Name')) {\n            REQUEST.param('debug', 'true');\n        }\n\n        await REQUEST.send();\n\n        output.appendLine(`[OK]`);\n    } catch (e) {\n        output.appendLine(`[ERROR: '${ $h.toStringSafe(e) }']`);\n    }\n}\n```\n\n##### Constants [[\u0026uarr;](#execute-scripts-)]\n\n###### cancel [[\u0026uarr;](#constants-)]\n\nProvides the underlying [CancellationToken](https://code.visualstudio.com/docs/extensionAPI/vscode-api#CancellationToken) object.\n\n```javascript\nconst USER_IDS = [1, 2, 3];\n\nfor (let i = 0; i \u003c USER_IDS.length; i++) {\n    if (cancel.isCancellationRequested) {\n        break;  // user wants to cancel\n    }\n\n    // TODO\n}\n```\n\n###### output [[\u0026uarr;](#constants-)]\n\nProvides the [OutputChannel](https://code.visualstudio.com/docs/extensionAPI/vscode-api#OutputChannel) of the extension.\n\n```javascript\noutput.show();\n\noutput.append('Hello');\noutput.appendLine(', TM!');\n```\n\n###### progress [[\u0026uarr;](#constants-)]\n\nStores the underlying [Progress](https://code.visualstudio.com/docs/extensionAPI/vscode-api#_a-nameprogressaspan-classcodeitem-id1166progresslttgtspan) object, provided by [withProgress()](https://code.visualstudio.com/docs/extensionAPI/vscode-api) function.\n\n```javascript\nconst USER_IDS = [1, 2, 3];\n\nfor (let i = 0; i \u003c USER_IDS.length; i++) {\n    const UID = USER_IDS[i];\n\n    progress.report({\n        message: `Executing code for user ${ i + 1 } (ID ${ USER_ID }) of ${ USERS.length } ...`,\n        increment: 1.0 / USERS.length * 100.0\n    });\n\n    // TODO\n}\n```\n\n##### Functions [[\u0026uarr;](#execute-scripts-)]\n\n###### alert [[\u0026uarr;](#functions-)]\n\nShows a (warning) popup.\n\n```javascript\nalert('Hello!');\n\n// with custom buttons\nswitch (await alert('Sure?', 'NO!', 'Yes')) {\n    case 'NO!':\n        console.log('User is UN-SURE!');\n        break;\n\n    case 'Yes':\n        console.log('User is sure.');\n        break;\n}\n```\n\n###### decode_html [[\u0026uarr;](#constants-)]\n\nDecodes the entities in a HTML string.\n\n```javascript\nlet encodedStr = '\u0026lt;strong\u0026gt;This is a test!\u0026lt;/strong\u0026gt;';\n\n// all entities\ndecode_html(encodedStr);  // '\u003cstrong\u003eThis is a test!\u003c/strong\u003e'\n\n// HTML 4\ndecode_html(encodedStr, '4');\n// HTML 5\ndecode_html(encodedStr, '5');\n// XML\ndecode_html(encodedStr, 'xml');\n```\n\n###### encode_html [[\u0026uarr;](#constants-)]\n\nEncodes a string to HTML entities.\n\n```javascript\nlet strToEncode = '\u003cstrong\u003eThis is a test!\u003c/strong\u003e';\n\n// all entities\nencode_html(strToEncode);  // '\u0026lt;strong\u0026gt;This is a test!\u0026lt;/strong\u0026gt;'\n\n// HTML 4\nencode_html(strToEncode, '4');\n// HTML 5\nencode_html(strToEncode, '5');\n// XML\nencode_html(strToEncode, 'xml');\n```\n\n###### from [[\u0026uarr;](#functions-)]\n\nCreates a new [LINQ style](https://en.wikipedia.org/wiki/Language_Integrated_Query) iterator for any iterable object, like arrays, generators or strings. For more information, s. [node-enumerable](https://github.com/mkloubert/node-enumerable).\n\n```javascript\nconst SEQUENCE     = from([1, '2', null, 3, 4, undefined, '5']);\nconst SUB_SEQUENCE = SEQUENCE.where(x =\u003e !_.isNil(x))  // 1, '2', 3, 4, '5'\n                             .ofType('string');  // '2', '5'\n\nfor (const ITEM of SUB_SEQUENCE) {\n    // TODO\n}\n```\n\n###### guid [[\u0026uarr;](#functions-)]\n\nGenerates a new unique ID, using [node-uuid](https://github.com/kelektiv/node-uuid).\n\n```javascript\n// v1\nconst GUID_v1_1 = guid('1');\nconst GUID_v1_2 = guid('v1');\n\n// v4\nconst GUID_v4_1 = guid();\nconst GUID_v4_2 = guid('4');\nconst GUID_v4_3 = guid('v4');\n\n// v5\nconst GUID_v5_1 = guid('5');\nconst GUID_v5_2 = guid('v5');\n```\n\n###### new_request [[\u0026uarr;](#functions-)]\n\nCreates a new instance of a [HTTP client](https://mkloubert.github.io/vscode-http-client/classes/_http_.httpclient.html), by using the data of the current request form. All important data, like URL, headers or body can be overwritten.\n\n```javascript\nconst REQUEST = new new_request();\n\nREQUEST.param('user', 5979)  // set / overwrite an URL / query parameter\n       .header('X-My-Header', 'TM')  // set / overwrite a request header\n       .body( await $fs.readFile('/path/to/body') );  // set / overwrite body\n\nawait REQUEST.send();\n```\n\n###### now [[\u0026uarr;](#functions-)]\n\nReturns a new instance of a [Moment.js](https://momentjs.com/) object, by using an optional parameter for the [timezone](https://momentjs.com/timezone/).\n\n```javascript\nconst CURRENT_TIME = now();\nconsole.log( CURRENT_TIME.format('YYYY-MM-DD HH:mm:ss') );\n\nconst CURRENT_TIME_WITH_TIMEZONE = now('Europe/Berlin');\nconsole.log( CURRENT_TIME_WITH_TIMEZONE.format('DD.MM.YYYY HH:mm') );\n```\n\n###### open_html [[\u0026uarr;](#constants-)]\n\nOpens a new [HTML tab](https://code.visualstudio.com/docs/extensionAPI/vscode-api#WebviewPanel).\n\n```javascript\nlet htmlCode = `\u003c!doctype html\u003e\n\u003chtml lang=\"en\"\u003e\n  \u003chead\u003e\n    \u003cmeta charset=\"utf-8\"\u003e\n\n    \u003cscript\u003e\n\n    const vscode = acquireVsCodeApi();\n\n    \u003c/script\u003e\n  \u003c/head\u003e\n\n  \u003cbody\u003e\n    \u003cdiv\u003eHello, TM!\u003c/div\u003e\n  \u003c/body\u003e\n\u003c/html\u003e`;\n\n// the function returns the underlying webview\n// s. https://code.visualstudio.com/docs/extensionAPI/vscode-api#WebviewPanel\nhtml(htmlCode);\n\n// with custom title\nhtml(htmlCode, 'My HTML document');\n```\n\nSECURITY HINT: The new tab is opened with the following settings:\n\n```json\n{\n    \"enableCommandUris\": true,\n    \"enableFindWidget\": true,\n    \"enableScripts\": true,\n    \"retainContextWhenHidden\": true\n}\n```\n\n###### open_markdown [[\u0026uarr;](#constants-)]\n\nOpens a new [HTML tab](https://code.visualstudio.com/docs/extensionAPI/vscode-api#WebviewPanel) with parsed [Markdown](https://en.wikipedia.org/wiki/Markdown) content.\n\n```javascript\nlet markdownCode = `# Header 1\n\n## Header 2\n\nLorem ipsum dolor sit amet.\n`;\n\n// the function returns the underlying webview\n// s. https://code.visualstudio.com/docs/extensionAPI/vscode-api#WebviewPanel\nmd(markdownCode);\n\n// with custom title\nmd(markdownCode, 'My Markdown document');\n\n// with custom, optional title and CSS\nmd(markdownCode, {\n    css: `\nbody {\n  background-color: red;\n}\n`,\n    title: 'My Markdown document'\n});\n```\n\nThe parser uses the following [settings](https://marked.js.org/):\n\n```json\n{\n    \"breaks\": true,\n    \"gfm\": true,\n    \"mangle\": true,\n    \"silent\": true,\n    \"tables\": true,\n    \"sanitize\": true\n}\n```\n\nSECURITY HINT: The new tab is opened with the following settings:\n\n```json\n{\n    \"enableCommandUris\": false,\n    \"enableFindWidget\": false,\n    \"enableScripts\": true,\n    \"retainContextWhenHidden\": true\n}\n```\n\n###### sleep [[\u0026uarr;](#functions-)]\n\nWaits a number of seconds before continue.\n\n```javascript\nawait sleep();  // 1 second\n\nawait sleep(2.5);  // 2.5 seconds\n```\n\n###### uuid [[\u0026uarr;](#functions-)]\n\nAlias for [guid()](#guid-).\n\n###### utc [[\u0026uarr;](#functions-)]\n\nReturns a new instance of a [Moment.js](https://momentjs.com/) object in [UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time).\n\n```javascript\nconst UTC_NOW = utc();\n\nconsole.log( UTC_NOW.format('YYYY-MM-DD HH:mm:ss') );\n```\n\n##### Modules [[\u0026uarr;](#execute-scripts-)]\n\n| Constant | Name | Description |\n| ---- | --------- | --------- |\n| `_` | [lodash](https://lodash.com/) | A modern JavaScript utility library delivering modularity, performance and extras. |\n| `$fs` | [fs-extra](https://github.com/jprichardson/node-fs-extra) | Extensions for the [Node.js file system module](https://nodejs.org/api/fs.html), especially for use in [async Promise](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise) context. |\n| `$h` | [vscode-helpers](https://github.com/mkloubert/vscode-helpers) | A lot of helpers classes and functions. |\n| `$html` | [node-html-entities](https://github.com/mdevils/node-html-entities) | HTML / XML parser. |\n| `$linq` | [node-enumerable](https://github.com/mkloubert/node-enumerable) | Provides [LINQ-style](https://en.wikipedia.org/wiki/Language_Integrated_Query) functions and classes. |\n| `$md` | [Marked](https://github.com/markedjs/marked) | [Markdown](https://en.wikipedia.org/wiki/Markdown) parser. |\n| `$moment` | [Moment.js](https://github.com/markedjs/marked) | Parse, validate, manipulate, and display dates and times in JavaScript. [moment-timezone](https://momentjs.com/timezone/) is already provided. |\n| `$vs` | [Visual Studio Code](https://code.visualstudio.com/docs/extensionAPI/vscode-api) | VS Code API. |\n\nYou also can include any module, shipped with VS Code, [Node.js](https://nodejs.org/api/modules.html), [that extension](https://github.com/mkloubert/vscode-http-client/blob/master/package.json) or any external script, which is available on your current system, by using the `require()` function.\n\n## Enhancements [[\u0026uarr;](#table-of-contents)]\n\n### Authorization [[\u0026uarr;](#enhancements-)]\n\n#### Basic Auth [[\u0026uarr;](#authorization-)]\n\nInstead of setting up a [Basic Auth](https://en.wikipedia.org/wiki/Basic_access_authentication) request header by using a [Base64](https://en.wikipedia.org/wiki/Base64) string like\n\n```http\nAuthorization: Basic bWtsb3ViZXJ0Om15UGFzc3dvcnQ=\n```\n\nyou can use the value as simple plain text, separating username and password by `:` character:\n\n```http\nAuthorization: Basic mkloubert:mypassword\n```\n\nKeep in mind: The string right to `Basic` will be trimmed!\n\n## HTTP files [[\u0026uarr;](#table-of-contents)]\n\nRequests can be imported from or to HTTP files.\n\nThose files are encoded in [ASCII](https://en.wikipedia.org/wiki/ASCII) and their lines are separated by CRLF (`\\r\\n`):\n\n```http\nPOST https://example.com/users/1 HTTP/1.1\nContent-type: application/json; charset=utf8\nX-User: 1\n\n{\n    \"id\": 1,\n    \"name\": \"mkloubert\"\n}\n```\n\n## Customizations [[\u0026uarr;](#table-of-contents)]\n\n### CSS [[\u0026uarr;](#customizations-)]\n\nYou can save a custom CSS file, called `custom.css`, inside the extension's folder, which is the sub folder `.vscode-http-client` inside the current user's home directory.\n\n## Syntaxes [[\u0026uarr;](#table-of-contents)]\n\n[Syntax highlighting](https://highlightjs.org/) supports all languages, which are part of [highlight.js](https://highlightjs.org/).\n\n## Support and contribute [[\u0026uarr;](#table-of-contents)]\n\nIf you like the extension, you can support the project by sending a [donation via PayPal](https://paypal.me/MarcelKloubert) to [me](https://github.com/mkloubert).\n\nTo contribute, you can [open an issue](https://github.com/mkloubert/vscode-http-client/issues) and/or fork this repository.\n\nTo work with the code:\n\n* clone [this repository](https://github.com/mkloubert/vscode-http-client)\n* create and change to a new branch, like `git checkout -b my_new_feature`\n* run `npm install` from your project folder\n* open that project folder in Visual Studio Code\n* now you can edit and debug there\n* commit your changes to your new branch and sync it with your forked GitHub repo\n* make a [pull request](https://github.com/mkloubert/vscode-http-client/pulls)\n\n## Related projects [[\u0026uarr;](#table-of-contents)]\n\n### node-enumerable [[\u0026uarr;](#related-projects-)]\n\n[node-enumerable](https://github.com/mkloubert/node-enumerable) is a [LINQ](https://en.wikipedia.org/wiki/Language_Integrated_Query) implementation for JavaScript, which runs in [Node.js](https://nodejs.org/) and browsers.\n\n### vscode-helpers [[\u0026uarr;](#related-projects-)]\n\n[vscode-helpers](https://github.com/mkloubert/vscode-helpers) is a NPM module, which you can use in your own [VSCode extension](https://code.visualstudio.com/docs/extensions/overview) and contains a lot of helpful classes and functions.\n","funding_links":["https://paypal.me/MarcelKloubert"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkloubert%2Fvscode-http-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkloubert%2Fvscode-http-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkloubert%2Fvscode-http-client/lists"}