{"id":17948790,"url":"https://github.com/octet-stream/apollo-link-form-data","last_synced_at":"2026-02-01T12:36:23.352Z","repository":{"id":32859106,"uuid":"135863192","full_name":"octet-stream/apollo-link-form-data","owner":"octet-stream","description":"Send your GraphQL request with apollo-link as FormData or JSON.","archived":false,"fork":false,"pushed_at":"2023-07-18T20:19:25.000Z","size":782,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-18T22:17:39.776Z","etag":null,"topics":["apollo-client","apollo-link","file-upload","form-data","graphql","javascript-library","json"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/apollo-link-form-data","language":"JavaScript","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/octet-stream.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":"2018-06-03T01:03:52.000Z","updated_at":"2021-04-30T17:41:36.000Z","dependencies_parsed_at":"2024-11-18T00:17:54.232Z","dependency_job_id":null,"html_url":"https://github.com/octet-stream/apollo-link-form-data","commit_stats":{"total_commits":81,"total_committers":3,"mean_commits":27.0,"dds":0.04938271604938271,"last_synced_commit":"ececab60f1709d53538e74872c389755d8700c2d"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/octet-stream/apollo-link-form-data","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octet-stream%2Fapollo-link-form-data","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octet-stream%2Fapollo-link-form-data/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octet-stream%2Fapollo-link-form-data/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octet-stream%2Fapollo-link-form-data/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/octet-stream","download_url":"https://codeload.github.com/octet-stream/apollo-link-form-data/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octet-stream%2Fapollo-link-form-data/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260933186,"owners_count":23084949,"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":["apollo-client","apollo-link","file-upload","form-data","graphql","javascript-library","json"],"created_at":"2024-10-29T09:09:52.681Z","updated_at":"2026-02-01T12:36:18.070Z","avatar_url":"https://github.com/octet-stream.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# apollo-link-form-data\n\nSend your GraphQL request with [apollo-link](https://github.com/apollographql/apollo-link) as FormData or JSON.\n\n[![Build Status](https://travis-ci.org/octet-stream/apollo-link-form-data.svg?branch=master)](https://travis-ci.org/octet-stream/apollo-link-form-data)\n[![Code Coverage](https://codecov.io/github/octet-stream/apollo-link-form-data/coverage.svg?branch=master)](https://codecov.io/github/octet-stream/apollo-link-form-data?branch=master)\n[![dependencies Status](https://david-dm.org/octet-stream/apollo-link-form-data/status.svg)](https://david-dm.org/octet-stream/apollo-link-form-data)\n[![devDependencies Status](https://david-dm.org/octet-stream/apollo-link-form-data/dev-status.svg)](https://david-dm.org/octet-stream/apollo-link-form-data?type=dev)\n\n## Installation\n\nYou can install this package from npm:\n\n```\nnpm install apollo-link-form-data graphql\n```\n\nOr with yarn:\n\n```sh\nyarn add apollo-link-form-data graphql\n```\n\nFor Node.js you also need to install following dependencies:\n\n```sh\n# 1. node-fetch ot any other fetch-compatible library instead of node-fetch\n# 2. Note that you need at least 1.5.1 version of the formdata-node package\nyarn add node-fetch formdata-node\n```\n\nAnd add this `fetch` library to options manually:\n\n```js\nimport fetch from \"node-fetch\"\n\nimport {createFormDataLink} from \"apollo-link-form-data\"\n\nconst link = createFormDataLink({fetch})\n```\n\nAnother thing I have to mention, is that ApolloLinkFormData uses `@octetstream/object-to-form-data` package under the hood\nto convert request payload to FormData which means that your data will be sent to server in spetial format.\nFor more info, read the API section of then-busboy documentation: [then-busboy#bracket-notation](https://github.com/octet-stream/then-busboy#bracket-notation)\n\nOf course, it doesn't mean that you have to use then-busboy on your server to process `multipart/form-data`\nrequests, but it must support mentioned format if you want to get usefull data out-of-the-box.\n\n## Usage\n\nImport and initialize with just two lines:\n\n```js\nimport {createFormDataLink} from \"apollo-link-form-data\"\n\nconst link = createFormDataLink({uri: \"https://api.example.com/graphql\"})\n```\n\nUsage with Apollo Client:\n\n```js\nimport ApolloClient from \"apollo-client\"\n\nimport {InMemoryCache} from \"apollo-cache-in-memory\"\nimport {createFormDataLink} from \"apollo-link-form-data\"\n\nconst link = createFormDataLink({\n  uri: \"https://api.example.com/graphql\"\n})\n\nconst cache = new InMemoryCache()\n\nconst client = ApolloClient({link, cache})\n```\n\n## API\n\n### `createFormDataLink(options) -\u003e {ApolloLinkFormData}`\n\nCreates and instance of ApolloLinkFormData with given options.\n\n  - **{object}** options.serialize – defines serialization options for @octetstream/object-to-form-data and FormData link\n  - **{boolean}** [options.serialize.force = false] – if `true`, request payload will be always converted to FormData.\n    Defaults to `false` which means that payload will be converted to FormData only when it contains at least one File.\n  - **{boolean}** [options.serialize.strict = false] – if `true`, all falsy booleans will be ignored. (See [#1](https://github.com/octet-stream/object-to-form-data/pull/1) PR in `@octetstream/object-to-form-data` for mode info)\n\n**More of available options you can find in [ApolloLinkHttp documentation](https://www.apollographql.com/docs/link/links/http.html)**.\n\n## Related links\n\n* [then-busboy](https://github.com/octet-stream/then-busboy) is a promise-based wrapper around Busboy. Process multipart/form-data content and returns it as a single object. Will be helpful to handle your data on the server-side applications.\n* [formdata-node](https://github.com/octet-stream/form-data) is an async-iterator and steam based [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) implementation for Node.js\n* [@octetstream/object-to-form-data](https://github.com/octet-stream/object-to-form-data) converts JavaScript object to FormData.\n* [Apollo Link](https://www.apollographql.com/docs/link/) is a standard interface for modifying control flow of GraphQL requests and fetching GraphQL results.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctet-stream%2Fapollo-link-form-data","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foctet-stream%2Fapollo-link-form-data","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctet-stream%2Fapollo-link-form-data/lists"}