Auto-Swaggerインタフェースファイルの自動アクセス
4629 ワード
Auto-Swagger
転送先:https://github.com/pablezhang/auto-swagger
なぜauto-swaggerを作るのですか?
仕事の中で、通常バックグラウンド開発の同窓会はswaggerインタフェースのドキュメントを提供します.フロントエンドの学生は、ドキュメントを検索するたびにインタフェースを呼び出します.つまり、swagger-uiからインタフェースの使用方法を抜粋し、開発中に以下の問題に遭遇したことがあるかどうかを想像します.インタフェース発見インタフェース新聞404を呼び出し、苦労して単語のスペルを間違えたことを発見した~ インタフェース発見インタフェース新聞400を呼び出し、swaagerとよく比較するとパラメータタイプ書き間違い、パラメータ名書き間違い~ を発見する.一時大意でリクエストタイプを書き間違えました~ ....仕事中に上記の問題に遭遇したことがある場合は、心の中で自分の不注意を非難するかもしれませんが、少し心が疲れているかもしれません.開発者はswagger-uiドキュメントにインタフェースをコピーすると、インタフェースのurl、パラメータタイプ、パラメータ名などを書き間違える可能性があります.特に、開発者は、プロジェクトの進捗状況を急ぎ、swagger-uiインタフェースの数が多く、ドキュメントが規範化されていないなどの問題に直面したときにエラーが発生する可能性があります.Autoswaggerは,上述した機械的繰返しのswagger抄録作業を解決するために現れたものである.
使用方法
1、auto-swaggerのインストール
初めて使用する場合は、初期化構成コマンドを使用することをお勧めします.コマンドラインツール
上記のコードは、簡単に構成された
3、swagger-uiのインタフェースファイルの取得を開始する
次のコマンドを実行します.
この場合、指定したoutputPathに
プロジェクトにauto-swaggerで生成されたインタフェースファイルを統合する方法
まず、生成されたインタフェースファイルの長さを見てみましょう.ここでは、共通のswaggerアドレスを使用しています.http://petstore.swagger.io/
これらのインタフェースファイルをプロジェクトでどのように使用しますか?
最初のステップは、
第2のステップでは、上記のファイルの観察を呼び出すと、インタフェースメソッドが1つの例にカプセル化されているため、使用時も極めて簡単であることがわかります.
既存のプロジェクトに統合するために、インタフェースファイルフォーマットをカスタマイズする方法.たとえば、プロジェクトには に出力することを指定する.
5 .
auto-swagger
は、swagger-uiを取得し、インタフェースファイルを要求するコマンドラインツールであり、インタフェース呼び出し者がインタフェースコードファイルを一クリックで生成することを支援することを目的としています.転送先:https://github.com/pablezhang/auto-swagger
なぜauto-swaggerを作るのですか?
仕事の中で、通常バックグラウンド開発の同窓会はswaggerインタフェースのドキュメントを提供します.フロントエンドの学生は、ドキュメントを検索するたびにインタフェースを呼び出します.つまり、swagger-uiからインタフェースの使用方法を抜粋し、開発中に以下の問題に遭遇したことがあるかどうかを想像します.
使用方法
1、auto-swaggerのインストール
npm install auto-swagger -g
またはyarn add auto-swagger -g
2、プロファイルswaggerを追加する.config.js 初めて使用する場合は、初期化構成コマンドを使用することをお勧めします.コマンドラインツール
auto-swagger init
を開くと、ディレクトリの下にswagger.config.js
ファイルがあるはずです.// swagger-url , json
const urlAddress = 'http://your-swagger-url/v2/api-docs';
// swaager , 。
const outputPath ='Services';
// , ,
const excludeParamName = [
"Application-Key",
"Access-Token",
"extFields"
];
const config = {
excludeParamName,
outputPath,
url: urlAddress
};
module.exports = config;
上記のコードは、簡単に構成された
swagger.config.js
ファイルです.3、swagger-uiのインタフェースファイルの取得を開始する
次のコマンドを実行します.
auto-swagger run
この場合、指定したoutputPathに
SomeService
ファイルが追加されます.これらのファイルはインタフェース呼び出しファイルです.これで、基本的な使い方が完成しましたプロジェクトにauto-swaggerで生成されたインタフェースファイルを統合する方法
まず、生成されたインタフェースファイルの長さを見てみましょう.ここでは、共通のswaggerアドレスを使用しています.http://petstore.swagger.io/
//Operationsaboutuser.ts
/**
* @Description: User
*/
/** Request ajax , 。 */
import Request from 'utils/Request';
class Operationsaboutuser {
/**
* This can only be done by the logged in user.
* This can only be done by the logged in user.
* post
* /user
* @param body [object Object] Created user object
*/
public async createUser ({body}) {
return Request({
url:`/user`,
method:'POST',
data: body,
query: {},
app: 'user',
})
}
}
// Controller , Controller
export default new Operationsaboutuser
これらのインタフェースファイルをプロジェクトでどのように使用しますか?
最初のステップは、
Request
ファイルを自分で実現する必要があります.いくつかの必須パラメータ1、url:すなわちswaggerリクエストパス2、method:[POST]|[GET]|[DELETE]|[PUT]など、サポートする必要があるメソッド3、data:通常はPOSTとPUTメソッドで4、query:クエリーパラメータは、Request
が自分で実現しているため、これらのパラメータをサポートする可能性があると述べています.あなたは完全に自主的に形参を決定することができます.第2のステップでは、上記のファイルの観察を呼び出すと、インタフェースメソッドが1つの例にカプセル化されているため、使用時も極めて簡単であることがわかります.
import Operationsaboutuser from 'Services/Operationsaboutuser';
async function createBody(body) {
const {resultCode, resultMsg} = await Operationsaboutuser.createUser({body})
if(resultCode === "0"){
console.log(" ")
}
}
createBody({id: "123", name: "foo"}) //
既存のプロジェクトに統合するために、インタフェースファイルフォーマットをカスタマイズする方法.たとえば、プロジェクトには
Request.js
がありますが、ファイルはutils
にありません.また、いくつかの理由でこれらの履歴コードを変更できません.auto-swagger
は、インタフェースファイルを生成する方法をカスタマイズすることができ、以下のように完全に構成されている.url: string
:swagger-uiにおけるjson情報インタフェースoutputPath: string
:swagger.config.js
が存在するフォルダをルートディレクトリとして、インタフェースファイルを指定するパスexcludeParamName: string[]
:Application-key
、token
などの各インタフェースに必要なパラメータをフィルタリングする必要があり、各インタフェースファイルパラメータに反映する必要はありません.childFunTemplate: string
:各インタフェース関数のテンプレート文字列.デフォルト値は次のとおりですconst childFunTemplate = `
/**
*/
public async ({}) {
return Request({
,
method:,
data: ,
query: {},
app: 'user',
})
}
`;
5 .
parentFunTemplate: string
:各インタフェースファイルの構成文字列.デフォルトは次のとおりです.const parentFunTemplate = `
/**
* @Description:
*/
import Request from 'utils/Request'; // Request
class { // , 、
}
export default new `;