コンフィギュレーションAPIレストコンKOA Yタイプスクリプト
30207 ワード
Nodejs 12.18.2 - Typescript 4.02 - Koa 2.13 - ts-node 9.0.0 - tsc-watch 4.2.9
Aunque He Trabajadoノードは、JavaScript Hace Ya Varios Aをとります.En El Trabajo , Anabo de iniciar un nuevo proyecto donde se citle la creaci to n varios microservicios on a typescript y v . es o como la oportunidad perfta by mostrarles ( Y apender claro !)A . N . D . A . N . A . A . N . A . A .として
コンフィギュレーション
Primero , Crearemos Nuestro proyecto , Prio Ejecutamos en la la Consola el Comando :
$ npm init -y
エステクレアエルArchivoパッケージ.JSON que Contendr et m Los M . Dulos usados en esteste proyecto junto con otras構成
VAMOS AのAPI APIKoa デロスMismos Creadoresデ急行u m duloは、類似したExpero Pero Mucho M ' s s liviano、R Pal y s s Le Lido que Nos permite ir a .
$ npm i koa koa-basic-auth koa-bodyparser koa-logger koa2-cors koa-mount koa-router
$ npm init -y
$ npm i koa koa-basic-auth koa-bodyparser koa-logger koa2-cors koa-mount koa-router
$ npm i -D typescript nodemon ts-node tsc-watch @types/koa @types/koa-bodyparser @types/koa-logger @types/koa-mount @types/koa-router @types/koa2-cors @types/koa-basic-auth
エルM・リードtsc-watch
NOS permite Ejecutar un Comando Despu ' s de de que Halla@types
ロス・ポール・デュロスのヴァーモス『サラ・パラ版』の息子たち<研究ノート>私にとってのグァート・ポウダー・トラブジャールの研究( 2 )
ts-node
エル・アーキヴォードにおけるエプロートserver.ts
エヌVez del cは、digoトランジドイドdist/server.js
パラファイナのAllounos procesos como el debugスーパーItantante、Ahora、詐欺ラayudaデル
tsc
( TypeScriptコンパイラ)、Creamos el Archivo que le dirは、型スクリプトC .$ npx tsc --init
ソロtsc --init
SI YA Tenemos Installado型スクリプトGlobalmenteNaveVez Ejecutado El C c didigo , Nos crea un archivotsconfig.json
パラモジュラー/dist
) デLos Archivos JS y ELエルDirectorio Raiz donde se encuentraトドエルCディックdigo Ts.tsconfig.json
se veaとして{
"compilerOptions": {
/* Visit https://aka.ms/tsconfig.json to read more about this file */
/* Basic Options */
"target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
"outDir": "./dist", /* Redirect output structure to the directory. */
"rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
/* Strict Type-Checking Options */
"strict": true, /* Enable all strict type-checking options. */
/* Module Resolution Options */
"moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
"baseUrl": "./", /* Base directory to resolve non-absolute module names. */
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
/* Experimental Options */
"experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
/* Advanced Options */
"skipLibCheck": true, /* Skip type checking of declaration files. */
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
},
"include": ["./**/*"],
"exclude": ["node_modules", "./**/*.spec.ts"]
}
アンテデescribir la priera lは、NerdデCディルディゴ、Vamosは、Configar El PuntoデEnteradaデNustrstra API Junto Conn algunos ComandosのタイルエヌNuestroパッケージの終端のVamosです.日本語教育研究会scripts
ディゴー:ディゴー...
"scripts": {
"dev": "nodemon",
"dev:js": "tsc-watch --onSuccess \"node dist/server.js\" ",
"build": "tsc dist/settings",
"start": "node dist/server.js"
}
...
Finalmente、CreamosエルArchivoノデモン.JSONパラシュートで降下する人que que en en desarrollo se ejecute despu es da cada cambio que hagamos de forma automは,はいy tener que estar todo el tiempo levantando y bajando el servidor{
"watch": ["./"],
"ext": "ts",
"ignore": ["./**/*.spec.ts"],
"exec": "ts-node ./server.ts"
}
APIレスト
Empecemos Creando el Archivoapp.ts
<研究ノート> L . A . A . L . A . L . A . N .
import koa from "koa";
import bodyparser from "koa-bodyparser";
import loggerKoa from "koa-logger";
import cors from "koa2-cors";
import mount from "koa-mount";
import auth from "koa-basic-auth";
import health from "./health";
//init
const app = new koa();
//middlewares
app.use(cors());
app.use(loggerKoa());
app.use(bodyparser());
app.use(mount("/health", auth({
name: 'user',
pass: 'password',
})));
//Routes
app.use(health.routes());
//export server
export default app;
Creamos Ahoraエルルータque Manejarは、ラスRutas y EL反応カーダカモに反応します.パラエロCreamos EL Archivohealth.ts
<研究ノート>
import Router, { IRouterParamContext } from "koa-router";
//init
const healthRouter = new Router();
healthRouter.get("/", async (ctx) => {
ctx.status = 200;
ctx.body = "ok";
});
healthRouter.get("/health", async (ctx) => {
ctx.status = 200;
ctx.body = {
nodeVersion: process.version,
service: 'TypeScriptNode',
memory: process.memoryUsage(),
pid: process.pid,
uptime: process.uptime(),
environment: 'dev',
appVersionPackage: "1.0.0",
};
});
export default healthRouter;
<研究ノート> Limo Creamos el Servidor http que llama nuestra aplicaci
import { Server } from "http";
import { AddressInfo } from "net";
import app from "./app";
class ApiServer {
server!: Server;
public constructor() {}
listen = () => {
const PORT = process.env.PORT || 3000;
this.server = app.listen(PORT, async () => {
console.log(
`When it's ${new Date().toLocaleString()} we are getting ready`
);
console.log(`Starting in ${process.env.NODE_ENV} mode`);
console.log(`Listening on ${PORT}`);
});
};
close = () => {
this.server.close();
};
address = () => {
return this.server.address() as AddressInfo;
};
}
const server = new ApiServer();
server.listen();
y EjecutamosエルAPIコンユダ$ npm run dev
Y詐欺郵便屋HacemmosラPeticiGET
AlphaのエンドポイントConfigaado y voalは!
リスト!TememosはConfigado Neostro proyectoベースのde de typescript conノード、sencillo、prのccicy y muyのstral al iniciar una nueva APIまでtiti.
NOS Vemos
source code https://gitlab.com/makitocode/typescript-node-api
Reference
この問題について(コンフィギュレーションAPIレストコンKOA Yタイプスクリプト), 我々は、より多くの情報をここで見つけました
https://dev.to/makitocode/configurar-api-rest-con-node-y-typescript-4h9c
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import koa from "koa";
import bodyparser from "koa-bodyparser";
import loggerKoa from "koa-logger";
import cors from "koa2-cors";
import mount from "koa-mount";
import auth from "koa-basic-auth";
import health from "./health";
//init
const app = new koa();
//middlewares
app.use(cors());
app.use(loggerKoa());
app.use(bodyparser());
app.use(mount("/health", auth({
name: 'user',
pass: 'password',
})));
//Routes
app.use(health.routes());
//export server
export default app;
import Router, { IRouterParamContext } from "koa-router";
//init
const healthRouter = new Router();
healthRouter.get("/", async (ctx) => {
ctx.status = 200;
ctx.body = "ok";
});
healthRouter.get("/health", async (ctx) => {
ctx.status = 200;
ctx.body = {
nodeVersion: process.version,
service: 'TypeScriptNode',
memory: process.memoryUsage(),
pid: process.pid,
uptime: process.uptime(),
environment: 'dev',
appVersionPackage: "1.0.0",
};
});
export default healthRouter;
import { Server } from "http";
import { AddressInfo } from "net";
import app from "./app";
class ApiServer {
server!: Server;
public constructor() {}
listen = () => {
const PORT = process.env.PORT || 3000;
this.server = app.listen(PORT, async () => {
console.log(
`When it's ${new Date().toLocaleString()} we are getting ready`
);
console.log(`Starting in ${process.env.NODE_ENV} mode`);
console.log(`Listening on ${PORT}`);
});
};
close = () => {
this.server.close();
};
address = () => {
return this.server.address() as AddressInfo;
};
}
const server = new ApiServer();
server.listen();
source code https://gitlab.com/makitocode/typescript-node-api
Reference
この問題について(コンフィギュレーションAPIレストコンKOA Yタイプスクリプト), 我々は、より多くの情報をここで見つけました https://dev.to/makitocode/configurar-api-rest-con-node-y-typescript-4h9cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol