REST API с использованием Deno
В моей последней статье Deno — первый взгляд мы обсудили базовое понимание Deno. Не проверили? Просто есть один раз. Я жду здесь, чувак!
.
.
.
Законченный? Здорово. Что ж, надеюсь, теперь вы чувствуете себя комфортно и хотите узнать больше о Deno. Особенно то, как мы строим наше первое приложение. Правильно? Давайте начнем создавать простой REST API, используя DENO.
Поскольку мы создаем очень простой REST API, давайте сохраним простоту. Итак, во-первых, нам нужно запустить сервер или запустить приложение, затем для конечных точек API нам нужны маршрутизаторы и, наконец, контроллер, чтобы определить его функциональность, вот и все.
app.ts
router.ts controller.ts
Возможно, вы слышали об Express.Js в NODE. Если не беспокойтесь, это популярный веб-фреймворк. Здесь, в Deno, мы будем использовать веб-фреймворк под названием Oak, вдохновленный Koa.
Просто создайте файл app.ts и просто импортируйте приложение из https://deno.land/x/oak/mod.ts и настройте порт.
import{ Application } from 'https://deno.land/x/oak/mod.ts'
const port = 8000
console.log(`Wow! The server is running at port ${port}`)
Теперь выполните app.ts
deno run --allow-net app.ts
Что ж, теперь сервер готов к работе, поэтому нам нужно сосредоточиться на следующей части, а именно на части маршрутизации. Давайте создадим новый файл с именем router.ts и объявим все конечные точки маршрутизации. Увидеть ниже…
import{ Router} from'https://deno.land/x/oak/mod.ts';
import{ getEmployees, getEmployee,addEmployee, updateEmployee,deleteEmployee } from'./controller.ts';
constrouter= newRouter();
router.
get('/employees', getEmployees).
get('/employee/:empId', getEmployee).
post('/employee', addEmployee).
put('/employee/:empId', updateEmployee).
delete('/employee/:empId', deleteEmployee)
Вы можете запутаться с функциями, написанными в роутах. Вы найдете их все в controllers.ts.
Теперь вернемся к app.ts и используем роутер через импорт. См. полный код app.ts ниже.
import{ Application} from'https://deno.land/x/oak/mod.ts';
import router from'./router.ts';
const PORT = 8000;
const app = newApplication();
app.use(router.routes());
app.use(router.allowedMethods());
console.log(`Wow! The server is running at port ${PORT}`) awaitapp.listen({port:PORT});
Сначала нам нужно провести интерфейс таблицы сотрудников
interfaceEmployees {
empId:string;
deptName:string;
designation:string;
}
Мы можем выделить эту часть интерфейса в отдельный файл TS в качестве модели, но для простоты мы продолжим работу с этим файлом контроллера. Теперь мы инициализируем массив сотрудника.
let employees: Array<Employees>=
[{
empId:"1",
deptName:"Growth",
designation:"Sr. Developer"
},{
empId:"2",
deptName:"ACE",
designation:"Pro. Developer"
},{
empId:"3",
deptName:"Growth",
designation:"BDM"
},{
empId:"4",
deptName:"ACE",
designation:"ADM"
},{
empId:"5",
deptName:"Bench",
designation:"Trainee Developer"
}]
И, наконец, мы создаем здесь все методы маршрутизации один за другим…
getEmployees Мы можем найти все данные о сотрудниках, просто запросив /employees
const getEmployees = ({ response}: { response: any}) => { response.body= employees }
Теперь проверьте здесь
getEmployee Мы можем получить данные обо всех сотрудниках в основной список сотрудников. Итак, мы запрашиваем метод post, и конечная точка будет /employee:id.
constgetEmployee = ({ params,response }: { params:{ empId: string}; response: any}) => {
constemployee: Employees| undefined =searchEmpByEmpId(params.empId) if(employee) {
response.status= 200
response.body= employee
}else {
response.status= 404
response.body= { message: 'Employeenot found.' }
}
}
Теперь проверьте здесь
addEmployee Мы можем добавить данные любого сотрудника в основной список сотрудников. Итак, мы запрашиваем метод post, и конечная точка будет /employee.
const addEmployee = async({ request, response}: { request: any;response: any}) => {
const body = await request.body()
const employee: Employees = body.value
employees.push(employee)
response.body= { message: 'OK'}
response.status= 200
}
Теперь проверьте здесь
updateEmployee Мы можем обновить данные любого сотрудника по его идентификатору. Итак, мы запрашиваем метод put, а конечной точкой будет /employee:id.
const updateEmployee = async({ params, request,response }: { params:{ empId: string}; request: any;response: any}) => {
let employee: Employees| undefined =searchEmpByEmpId(params.empId) if(employee) {
const body = await request.body()
const updateInfos: { deptName?:string; designation?:string } = body.value
employee= { ...employee, ...updateInfos}
employees= [...employees.filter(employee=> employee.empId!== params.empId),employee]
response.status= 200
response.body= { message: 'OK'}
}else {
response.status= 404 response.body= { message: `Employeenot found` }
}
}
Теперь проверьте здесь
deleteEmployee Мы можем удалить данные любого сотрудника по его идентификатору сотрудника. Итак, мы запрашиваем метод удаления, а конечной точкой будет /employee:id.
const deleteEmployee = ({ params,response }: { params:{ empId: string}; response: any}) => {
employees= employees.filter(employee=> employee.empId!== params.empId)
response.body= { message: 'OK'}
response.status= 200
}
Теперь проверьте здесь
В конце вашего controller.ts вам нужно экспортировать все методы, чтобы router.ts мог их импортировать.
export{ getEmployees, getEmployee,addEmployee, updateEmployee,deleteEmployee }
Резюме
Теперь мы рады видеть полное руководство по Deno REST API. Это полезно для вас? Если это так, пожалуйста, оставьте комментарий на [email protected] и поделитесь этой статьей как можно больше. Большое тебе спасибо!
Мы есть на Facebook, Twitter, Quora и т.д.
Кстати, хотите узнать больше о Deno? Просто ознакомьтесь с официальной документацией Deno.
Первоначально опубликовано на https://codinghub.net.