Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add OPTIONS-method as a shortcut #461

Merged
merged 2 commits into from Mar 27, 2017
Merged

Conversation

theikkila
Copy link
Contributor

Axios is missing OPTIONS-method as a shortcut. This PR will implement it

@coveralls
Copy link

Coverage Status

Coverage remained the same at 93.979% when pulling 2e0adc1 on theikkila:master into d982cf9 on mzabriskie:master.

@nickuraltsev
Copy link
Member

Thank you for the PR! What's the use case for this?

@theikkila
Copy link
Contributor Author

This is for making the API consistent across all standardized HTTP-verbs. Options is sematically used ie. when fetching dynamic options for some endpoint.
Usually the response can tell the allowed or required fields.

@ianks
Copy link

ianks commented Nov 7, 2016

I would like to use this to test that my API is returning the correct CORS headers.

@nickuraltsev
Copy link
Member

I don't think we need to add a shortcut method for OPTIONS as preflight requests are normally sent by the browser. For test purposes, you can use the request method as follows:

axios.request({
  method: 'options',
 url: '/foo'
})

Thank you!

@theikkila
Copy link
Contributor Author

theikkila commented Mar 16, 2017

OPTIONS are not just related to preflight requests but also for actually inspecting meta-data about some REST api endpoint. OPTIONS-shortcut is not for preflight requests but as I said ie. to gather some options about the validation. So closing this PR for that is just wrong.

According to RFC-2616 / 9.2 OPTIONS:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

The OPTIONS method represents a request for information about the communication options available on the request/response chain identified by the Request-URI. This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.

Real world example is Django Rest Framework, it uses the OPTIONS-verb exacly for that purpose.

Another reason to merge this PR is to make the API of axios consistent. All other RFC-verbs are implemented as shortcuts except this.

Please reopen this PR @nickuraltsev

@nickuraltsev nickuraltsev reopened this Mar 19, 2017
@coveralls
Copy link

Coverage Status

Coverage decreased (-0.3%) to 93.687% when pulling 2e0adc1 on theikkila:master into d982cf9 on mzabriskie:master.

README.md Outdated
@@ -142,6 +142,7 @@ For convenience aliases have been provided for all supported request methods.
##### axios.post(url[, data[, config]])
##### axios.put(url[, data[, config]])
##### axios.patch(url[, data[, config]])
##### axios.options(url[, data[, config]])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The options method does not accept data parameter. Could you please remove data and place options between head and post in README.md?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, sure!

@coveralls
Copy link

Coverage Status

Coverage decreased (-0.3%) to 93.687% when pulling 8cdfcd0 on theikkila:master into d982cf9 on mzabriskie:master.

@theikkila
Copy link
Contributor Author

Fixed reviewed problems. Also updated the documentation from instance methods to contain the new added alias.

@nickuraltsev nickuraltsev merged commit 2fe9562 into axios:master Mar 27, 2017
jimthedev pushed a commit to commitizen/cz-cli that referenced this pull request May 24, 2018
This Pull Request updates dependency [axios](https://github.com/axios/axios) from `v0.15.2` to `v0.18.0`



<details>
<summary>Release Notes</summary>

### [`v0.18.0`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0180-Feb-19-2018)
[Compare Source](axios/axios@v0.17.1...v0.18.0)
- Adding support for UNIX Sockets when running with Node.js ([#&#8203;1070](`axios/axios#1070))
- Fixing typings ([#&#8203;1177](`axios/axios#1177)):
    - AxiosRequestConfig.proxy: allows type false
    - AxiosProxyConfig: added auth field
- Adding function signature in AxiosInstance interface so AxiosInstance can be invoked ([#&#8203;1192](`axios/axios#1192), [#&#8203;1254](`axios/axios#1254))
- Allowing maxContentLength to pass through to redirected calls as maxBodyLength in follow-redirects config ([#&#8203;1287](`axios/axios#1287))
- Fixing configuration when using an instance - method can now be set ([#&#8203;1342](`axios/axios#1342))

---

### [`v0.17.1`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0171-Nov-11-2017)
[Compare Source](axios/axios@v0.17.0...v0.17.1)
- Fixing issue with web workers ([#&#8203;1160](`axios/axios#1160))
- Allowing overriding transport ([#&#8203;1080](`axios/axios#1080))
- Updating TypeScript typings ([#&#8203;1165](`axios/axios#1165), [#&#8203;1125](`axios/axios#1125), [#&#8203;1131](`axios/axios#1131))

---

### [`v0.17.0`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0170-Oct-21-2017)
[Compare Source](axios/axios@v0.16.2...v0.17.0)
- **BREAKING** Fixing issue with `baseURL` and interceptors ([#&#8203;950](`axios/axios#950))
- **BREAKING** Improving handing of duplicate headers ([#&#8203;874](`axios/axios#874))
- Adding support for disabling proxies ([#&#8203;691](`axios/axios#691))
- Updating TypeScript typings with generic type parameters ([#&#8203;1061](`axios/axios#1061))

---

### [`v0.16.2`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0162-Jun-3-2017)
[Compare Source](axios/axios@v0.16.1...v0.16.2)
- Fixing issue with including `buffer` in bundle ([#&#8203;887](`axios/axios#887))
- Including underlying request in errors ([#&#8203;830](`axios/axios#830))
- Convert `method` to lowercase ([#&#8203;930](`axios/axios#930))

---

### [`v0.16.1`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0161-Apr-8-2017)
[Compare Source](axios/axios@v0.16.0...v0.16.1)
- Improving HTTP adapter to return last request in case of redirects ([#&#8203;828](`axios/axios#828))
- Updating `follow-redirects` dependency ([#&#8203;829](`axios/axios#829))
- Adding support for passing `Buffer` in node ([#&#8203;773](`axios/axios#773))

---

### [`v0.16.0`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0160-Mar-31-2017)
[Compare Source](axios/axios@v0.15.3...v0.16.0)
- **BREAKING** Removing `Promise` from axios typings in favor of built-in type declarations ([#&#8203;480](`axios/axios#480))
- Adding `options` shortcut method ([#&#8203;461](`axios/axios#461))
- Fixing issue with using `responseType: 'json'` in browsers incompatible with XHR Level 2 ([#&#8203;654](`axios/axios#654))
- Improving React Native detection ([#&#8203;731](`axios/axios#731))
- Fixing `combineURLs` to support empty `relativeURL` ([#&#8203;581](`axios/axios#581))
- Removing `PROTECTION_PREFIX` support ([#&#8203;561](`axios/axios#561))

---

### [`v0.15.3`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0153-Nov-27-2016)
[Compare Source](axios/axios@v0.15.2...v0.15.3)
- Fixing issue with custom instances and global defaults ([#&#8203;443](`axios/axios#443))
- Renaming `axios.d.ts` to `index.d.ts` ([#&#8203;519](`axios/axios#519))
- Adding `get`, `head`, and `delete` to `defaults.headers` ([#&#8203;509](`axios/axios#509))
- Fixing issue with `btoa` and IE ([#&#8203;507](`axios/axios#507))
- Adding support for proxy authentication ([#&#8203;483](`axios/axios#483))
- Improving HTTP adapter to use `http` protocol by default ([#&#8203;493](`axios/axios#493))
- Fixing proxy issues ([#&#8203;491](`axios/axios#491))

---

</details>




---

This PR has been generated by [Renovate Bot](https://renovatebot.com).
@axios axios locked and limited conversation to collaborators May 3, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants