bunjs를 사용하여 api와 같은 표현 작성
12604 단어 tutorialprogrammingjavascriptwebdev
그래서 나는 시도하기로 결정했습니다…
Bun에서 http 서버 API를 살펴봅니다.
명령줄에서 롤빵을 다운로드하는 방법은 다음과 같습니다.
curl -fsSL https://bun.sh/install | bash
첫 번째 방법은 js 파일이 가져오기 기능이 있는 기본 개체를 내보내는 경우 서버를 시작하는 것입니다.
indexjs 내부
export default {
fetch(req) {
return new Response("HI!");
},
};
또는 Bun.serve를 사용할 수 있습니다.
Bun.serve({
fetch(req) {
return new Response("HI!");
},
});
서버를 시작하려면
bun run index.js
를 실행합니다.그리고 그게 다야 ! 모든 것이 작동하고 있습니다…
하지만 이 API는 너무 하위 수준이므로 프로젝트가 커지면 개발자가 중복 코드를 작성해야 합니다. 그래서 처음부터 bun을 사용하여 api와 같은 익스프레스를 만들기로 결정했습니다. bun을 처음 사용하는 모든 사람은 익스프레스에 대한 경험이 있다면 bun api를 배울 필요가 없습니다.
여기 제가 하는 일이 있습니다.
먼저 요청을 처리해야 합니다.
http 메서드가 포함된 BunServer 클래스를 만듭니다.
http 메소드를 거치는 모든 것은 델리게이트 기능을 사용하여 처리합니다.
requestMap
는 경로 맵과 해당 핸들러를 저장합니다.middlewares
사용자가 선언한 모든 미들웨어를 저장합니다.위는 캐시에 저장하는 대리자 기능입니다.
이것이 우리가 요청을 처리하는 방법입니다. 매우 간단합니다.
다음은 미들웨어입니다.
Express에는 시그니처
(req, res, next)
가 있는 미들웨어 기능이 있으며 이는 chain of responsibility 디자인 패턴입니다. 다음은 내가 구현한 방법입니다.미들웨어 전달을 처리하기 위해
Chain
클래스를 만들었습니다. 여기서 알아야 할 몇 가지 사항입니다.index++
해당 인덱스가 있는 미들웨어에서 콜백 함수를 가져옵니다. this.ready
. 그리고 this.isFinish()
, 우리는 이미 모든 미들웨어를 호출했습니다. 마지막으로 bun api의 가져오기 메서드에 대해 마무리합니다.
요청이 들어오면 먼저 모든 미들웨어를 먼저 호출하고 미들웨어가 요청을 중지하지 않으면 실제로 비즈니스 로직을 처리하는 요청 핸들러를 호출했습니다.
사용 방법은 다음과 같습니다.
패키지 이름은 bunrest이며 이미 npm에 게시되어 있습니다.
npm i bunrest
먼저 서버 개체를 만듭니다.
import App from 'bunrest'
const server = new App.BunServer();
그런 다음 익스프레스처럼 사용할 수 있습니다.
server.get('/test', (req, res) => {
res.status(200).json({ message: 'succeed' });
}, (req, res, next) => {
console.log('get');
next();
});
server.put('/test', (req, res) => {
res.status(200).json({ message: 'succeed' });
}, (req, res, next) => {
console.log('put');
});
server.post('/test', (req, res) => {
res.status(200).json({ message: 'succeed' });
});
미들웨어 추가
// or you can add the middlewares this way
server.get('/user',
(req, res) => { /** handle request **/ },
(req, res, next) => {
/**
* Handle middlewares
* */
});
라우터 추가
// add router
const router = server.Router();
router.get('/test', (req, res) => {
res.status(200).json({ message: 'Router succeed' });
})
router.post('/test', (req, res) => {
res.status(200).json({ message: 'Router succeed' });
})
router.put('/test', (req, res) => {
res.status(200).json({ message: 'Router succeed' });
})
server.use('/your_route_path', router);
마지막으로 서버를 시작하려면
server.listen(3000, () => {
console.log('App is listening on port 3000');
});
소스 코드를 확인하거나 기여하려면 여기github 페이지를 참조하십시오.
Reference
이 문제에 관하여(bunjs를 사용하여 api와 같은 표현 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lau1944/write-a-express-like-api-using-bunjs-3obh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)