jin-curlize
v1.6.1
Published
curl command create from fastify request object
Downloads
123
Readme
jin-curlize
jin-curlize create curl command from FastifyRequest.
Why?
- automatic create curl command from FastifyRequest
- Quickly retry error request
- Support querystring, header, body replacer
Table of Contents
How to works?
jin-curlize
create curl command from FastifyRequest
. URL, querystirng, header create using IncomingMessage
in FastifyRequest
. For example,
IncomingMessage
.IncomingHttpHeaders
to--header
optionIncomingMessage
.url to querystring and href
But IncomingMessage
is already ended ReadableStream in FastifyReqest
. So body create using FastifyRequest
.body.
flowchart LR
IMH[IncomingMessage.IncomingHttpHeaders] --> JC[jin-curlize]
IMU[IncomingMessage.url] --> JC
FB[FastifyRequest.body] --> JC
JC --> C[curl command]
JC --> A[AxiosRequestConfig]
Usage
create curl command
import fastify from 'fastify';
import { createFromFastify3 } from 'jin-curlize';
const server = fastify({
logger: {
transport: {
target: 'pino-pretty',
},
serializers: {
res(reply) {
return {
statusCode: reply.statusCode,
};
},
req(request) {
return {
method: request.method,
url: request.url,
path: request.routerPath,
parameters: request.params,
headers: request.headers,
curl: createFromFastify3(request, { prettify: false }),
};
},
},
},
});
server.listen({ host: '0.0.0.0', port: 3000 });
create axios request configuration
import fastify from 'fastify';
import { createAxiosFromFastify3 } from 'jin-curlize';
const fastify = fastify({
logger: {
transport: {
target: 'pino-pretty',
},
serializers: {
res(reply) {
return {
statusCode: reply.statusCode,
};
},
req(request) {
return {
method: request.method,
url: request.url,
path: request.routerPath,
parameters: request.params,
headers: request.headers,
axios: JSON.stringify(createAxiosFromFastify3(request)),
};
},
},
},
});
server.listen({ host: '0.0.0.0', port: 3000 });
Example
Axios Request
await axios.request({
method: 'post',
url: `http://localhost:3000/post-form`,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
data: querystring.stringify({
name: 'ironman',
ability: ['energy repulsor', 'supersonic flight'],
}),
});
Create command
curl -X POST 'http://localhost:3000/post-form' --header 'content-type: application/x-www-form-urlencoded' --data name='ironman' --data ability='energy repulsor' --data ability='supersonic flight'
Options
createFromFastify3
| Name | Requirement | Description |
| --------------------- | ----------- | -------------------------------------------------------------- |
| prettify | require | Apply prettifing. Add newline and backslash add on line-ending |
| indent | optional | Only work on prettify set true, make space size |
| disableFollowRedirect | optional | If set true, remove --location
option from command |
| changeHeaderKey | optional | change header key case. eg. content-type
to Content-Type
|
| replacer.querystring | optional | replacer for querystring |
| replacer.body | optional | replacer for body |
| replacer.header | optional | replacer for header |
createAxiosFromFastify3
| Name | Requirement | Description |
| -------------------- | ----------- | ------------------------------------------------------------ |
| changeHeaderKey | optional | change header key case. eg. content-type
to Content-Type
|
| replacer.querystring | optional | replacer for querystring |
| replacer.body | optional | replacer for body |
| replacer.header | optional | replacer for header |
How do I add x-request-id?
jin-axios-curlize
If you want that curl command generate from AxiosRequest, use jin-axios-curlize package.