Transform Swagger 3.0/2.0 to the function that send request by keq.
You need prepare a Swagger 3.0 file first.
keq-cli compile
is use to compile a local swagger file.
npx keq-cli compile -o ./output -m userService ./swagger.json
Options:
option | description |
---|---|
-o --outdir |
The output directory |
-m --module-name |
The module name |
--file-naming-style |
File naming style.(default 'snakeCase', see more in change-case) |
--request |
The request package used in compiled result.(default 'keq') |
keq-cli build
will compile according to the config file.
This makes it possible to compile multiple swaggers at once and makes recompiling easier.
By default, it will search for .keqrc.yml
, .keqrc.json
, .keqrc.js
, .keqrc.ts
.
And you can use -c --config <config_file_path>
to set the config filepath you wanted.
Options:
option | description |
---|---|
[moduleName] |
Only generate files of the specified module |
-c --config <config_file_path> |
The config filepath |
-i --interactive |
Interactive select the scope of generation |
--method <method> |
Only generate files of the specified operation method |
--pathname <pathname> |
Only generate files of the specified operation pathname |
--no-append |
Don't generate files that not exist |
--no-update |
Don't generate files that existed |
option | required | default | description |
---|---|---|---|
outdir | true | - | The directory generate files |
fileNamingStyle | false | - | The naming style of files |
modules | true | - | Swagger files address. a url or local filepath. |
operationId | false | ({ operation }) => operation.operationId |
By default, operationId is used as the function name. You could customize it to avoid duplication. |
strict | false | false |
Whether remove files that generated last. |
esm | false | false |
Comply with esm specifications. |
enum | example |
---|---|
FileNamingStyle.camelCase |
"twoWords" |
FileNamingStyle.capitalCase |
"Two Words" |
FileNamingStyle.constantCase |
"TWO_WORDS" |
FileNamingStyle.dotCase |
"two.words" |
FileNamingStyle.headerCase |
"Tow-Words" |
FileNamingStyle.noCase |
"two words" |
FileNamingStyle.paramCase |
"two-words" |
FileNamingStyle.pascalCase |
"TwoWords" |
FileNamingStyle.pathCase |
"two/words" |
FileNamingStyle.sentenceCase |
"Two words" |
FileNamingStyle.snakeCase |
"two_words" |
The yml configuration file Example:
outdir: ./output
fileNamingStyle: snakeCase
modules:
userService: ./swagger.json
coreService: http://example.com/swagger.json
{
"outdir": "./output",
"fileNamingStyle": "snakeCase",
"modules": {
"userService": "./swagger.json",
"coreService": "http://example.com/swagger.json"
}
}
import { defineKeqConfig, FileNamingStyle } from "keq-cli";
export default defineKeqConfig({
outdir: "./output",
fileNamingStyle: FileNamingStyle.snakeCase,
modules: {
userService: "./swagger.json",
coreService: "http://example.com/swagger.json",
},
operationId: ({ method, pathname, operation }) =>
`${method}#${pathname.replace("/", ".")}`,
});
import { request, mount } from "keq";
import { setHeader } from "keq-header";
import proxy from "keq-proxy";
import updateUser from "./outdir/userService/update_user";
// Set Request Origin
request.bseOrigin("http://127.0.0.1:8080");
request
.useRouter()
// set your middleware for module
.module("userService", setHeader("x-custom-header", "custom_value"))
// set modlue request base url for module
.module("userService", setBaseUrl("http://example.com/api"));
async function action() {
await updateUser({
id: 1,
name: "Marry",
});
}