r2curl

Background
- r2curl was inspired by @delirius325/axios-curlirize.
- axios-curlirize is very convenient. but works as a middleware for axios, and I think this part is black box logic
- it contains potentially asynchronous concurrency issues and difficult-to-manage elements.
- So I created a new 'Request to cURL' package that is completely independent of the dependencies of axios.
Feature
- Generates cURL commands completely independently from the outside of the request wrapper package.
- Provides additional options involved in generating the cURL command.
- It will be updated soon to be available in packages like node-fetch or request.
Roadmap
Install
npm install r2curl --save
Usage
axios
AxiosResponse
import r2curl from 'r2curl';
const response = await axios.get('https://google.com');
const curl = r2curl(response);
console.log(curl);
AxiosRequestConfig
import r2curl from 'r2curl';
const config = {
url: 'https://google.com',
method: 'POST',
data: {
caller: 'curl tester',
},
headers: {
'Content-Type': 'application/json',
},
};
const curl = r2curl(reqeustConfig);
console.log(curl);
const response = await axios.request(config);
node-fetch
request
More r2curl
Options
option.quote
- Determines the type of quota around the body and uri.
- default is
single
import r2curl from 'r2curl';
const option = {
quote: 'double',
};
const curl = r2curl(requestConfig, option);
console.log(curl);
option.defaultContentType
- Determines the default Content-Type header value for
POST
and PUT
requests.
- default is
application/json; charset=utf-8
- Type is
(enum) HTTP_HEADER_CONTENT_TYPE
| string
| false
;
- If you give
(boolean) false
to defaultContentType
, you can disable Content-Type
Header.
import r2curl, { HTTP_HEADER_CONTENT_TYPE } from 'r2curl';
const option = {
defaultContentType: 'application/json5',
}
const request: AxiosRequestConfig = { url: 'https://google.com', method: 'POST' };
const curl = r2curl(config, option);
console.log(curl);
option.forceBody
- Accept Body all HTTP Method.
- By default, Body is not allowed in
GET
and DELETE
methods.
- However, some services such as ElasticSearch should be able to use the Body as a
GET
method. At this point, use this option to activate the Body.
import r2curl from 'r2curl';
const config: AxiosRequestConfig = {
url: 'https://google.com',
method: 'GET',
data: {
caller: 'https://github.com/uyu423/r2curl',
sorry: true,
},
};
const option = {
forceBody: true,
}
const curl = r2curl(config, option);