Este es el segundo post ya sobre Deno en español, la primera parte esta en este enlace:First look with deno(Spanish).
Configurando el entorno de trabajo.
Pasando a la instalación de Deno, abriendo la terminal digitan el siguiente comando:
Shell (macOS, Linux):
curl -fsSL https://deno.land/x/install/install.sh | sh
PowerShell (Windows):
iwr https://deno.land/x/install/install.ps1 -useb | iex
ya instalado Deno en el editor de código asumiendo que es Visual Studio Code pasamos a instalar la extensión que soporta a deno dejustjack
ya instalada, en la carpeta .vscode se crea el archivo settings.json. Dentro del archivo se pone
//settings.json{"deno.enable":true,}
Comencemos a construir la Rest API
la estructura del proyecto será
.├── mod.ts├── controllers│ └── handlers.ts└── routes └── routes.ts
usaremos el framework Oak.
Comencemos por crear el archivo mod.ts importando Application dehttps://deno.land/x/oak/mod.ts y el enrutador de './routes/routes.ts'
import{Application}from'https://deno.land/x/oak/mod.ts'importrouterfrom'./routes.ts'
despues se crea el setup del entorno ya sea para poner en deploy o hacerlo local
constenv=Deno.env.toObject();constPORT=env.PORT||3000;constHOST=env.HOST||'localhost';
Ahora creamos el archivo routes.ts:
import{Router}from'https://deno.land/x/oak@v4.0.0/mod.ts';import{getDog,deleteDog,updateDog,addDog,getDogs}from'../controllers/handlers.ts';constrouter=newRouter()router.get('/dogs',getDogs).get('/dogs/:id',getDog).post('/dogs',addDog).put('/dogs/:id',updateDog).delete('/dogs/:id',deleteDog)exportdefaultrouter
(Las funciones implementadas en estas rutas se crean en el archivo handlers.ts)
ya con esto terminamos nuestro mod.ts
constapp=newApplication();console.log(`App is listening in${HOST} in port${PORT}`);app.use(router.routes());app.use(router.allowedMethods());awaitapp.listen(`${HOST}:${PORT}`);
Ahora creamos nuestro handlers.ts primero declarando la interfaz para el arreglo de perros
interfaceDogs{id:string,name:string,age:number};letdogs:Array<Dogs>=[{id:"1",name:'Pepe',age:2},{id:"2",name:'ajio',age:3}];
creamos el metodo getDogs:
constgetDogs=({response}:{response:any})=>{response.body=dogs}
getDog: retorna un solo perro
constgetDog=({params,response}:{params:{id:string};response:any})=>{constdog:Dogs|undefined=searchDogById(params.id)if(dog){response.status=200response.body=dogs[0]}else{response.status=404response.body={message:`dog not found.`}}}
addDog: crea un nuevo perro
constaddDog=async({request,response}:{request:any;response:any})=>{constbody=awaitrequest.body()constdog:Dogs=body.valuedogs.push(dog);response.body={message:'OK'}response.status=200}
updateDog: actualizar algun dato del perro
constupdateDog=async({params,request,response}:{params:{id:string};request:any;response:any})=>{letdog:Dogs|undefined=searchDogById(params.id)if(dog){constbody=awaitrequest.body()constupdateInfos:{id?:string;name?:string;age?:number}=body.valuedog={...dog,...updateInfos}dogs=[...dogs.filter(dog=>dog.id!==params.id),dog]response.status=200response.body={message:'OK'}}else{response.status=404response.body={message:`Dog not found`}}}
delete: para eliminar un perro especifico buscando por su id
constdeleteDog=({params,response}:{params:{id:string};response:any})=>{dogs=dogs.filter(dog=>dog.id!==params.id)response.body={message:'OK'}response.status=200}constsearchDogById=(id:string):(Dogs|undefined)=>dogs.filter(dog=>dog.id===id)[0]export{getDogs,getDog,updateDog,deleteDog,addDog}
Fin
Top comments(0)
For further actions, you may consider blocking this person and/orreporting abuse