Express는 Node.js를 사용하여 웹 애플리케이션을 개발하는 데 가장 인기있는 프레임 워크였습니다. 그러나 프레임 워크는 최근 몇 년 동안 활발한 개발을 감소시켜 현대 자바 스크립트 기능에 대한 지원이 부족했습니다. 동시에 Node.js 응용 프로그램 개발에 대한 다양한 접근 방식을 채택하는 많은 새로운 프레임 워크가 등장하고 Fastify가 그 중 하나입니다.
빠른 속도. 우리는 응용 프로그램에서 프레임 워크가 성능 병목 현상의 소스가되기를 원하지 않습니다. 좋은 소식은 Fastify가 고성능을 달성하기 위해 구축된다는 것입니다. Fastify 벤치 마크는 다른 node.js 웹 프레임 워크와 어떻게 비교되는지 보여줍니다.
Express 응용 프로그램에 대한 API 통합 테스트를 작성하는 경우 응용 프로그램을 Fastify로 마이그레이션 한 후 동일한 테스트를 실행할 수 있기를 원합니다. API에 대한 통합 테스트를 작성할 때 다음 사항을 고려해야합니다.
Fastify-Express를 사용하여 Express에서 Fastify로 마이그레이션합니다
이 기사의 모든 샘플 코드는 GitHub에서 찾을 수 있으며이를 탐색, 다운로드 및 실험 할 수 있습니다.
통합 테스트는 마이그레이션 전후에 유효한 상태를 유지하기 위해 프레임 워크 독립적이어야합니다. 따라서 테스트 프로세스를 단순화합니다.
<code> app.get("/user/:id", async (request) => await getUser(request.params.id));
</code>
<code> app.get("/user/:id", async (request, reply) => {
const name = request.body.name;
reply.send({ user: { name } });
});
</code>
<code> app.get("/user/:id", async (request, reply) => { const name = request.body.name; reply.send({ user: { name } }); }); </code>
위의 코드에서, 우리는 두 가지 Express Middleware 예제를 구성했습니다 :
<code>// src/routes.js const router = express.Router(); router.get("/:user_id", function getUser(request, response, next) { response.json({}); }); export default router; </code>
<code> app.get("/user/:id", async (request) => await getUser(request.params.id)); </code>
이 모듈에서는 새 Express Server 인스턴스를 생성하는 함수를 정의합니다. 그런 다음 라우터 객체를 서버 인스턴스에 추가합니다.
서버 모듈<code> app.get("/user/:id", async (request, reply) => { const name = request.body.name; reply.send({ user: { name } }); }); </code>응용 프로그램을 실행하십시오 이제 우리는 터미널에서 실행할 수있는 완전한 런닝 가능한 Express 응용 프로그램이 있습니다.
<code>// src/routes.js const router = express.Router(); router.get("/:user_id", function getUser(request, response, next) { response.json({}); }); export default router; </code>
<code>// src/server.js import Fastify from "fastify"; import ExpressPlugin from "fastify-express"; import routes from "./routes.js"; const fastify = Fastify(); await fastify.register(ExpressPlugin); fastify.use("/user", routes); await fastify.listen(3000); </code>
<code>mkdir express-to-fastify-migration cd express-to-fastify-migration npm init -y </code>
<code> app.get("/user/:id", async (request) => await getUser(request.params.id));
</code>
<code> app.get("/user/:id", async (request, reply) => {
const name = request.body.name;
reply.send({ user: { name } });
});
</code>
<code> app.get("/user/:id", async (request) => await getUser(request.params.id));
</code>
<code> app.get("/user/:id", async (request, reply) => { const name = request.body.name; reply.send({ user: { name } }); }); </code>그런 다음 다른 터미널에서 Curl을 사용하여 API에 예상대로 작동하는지 확인하기 위해 API에 요청합니다.
http-errors ➜ fastify 감인 가능한 serve static ➜ fastify static Multer ➜ Fastify-Multer
<code>// src/routes.js const router = express.Router(); router.get("/:user_id", function getUser(request, response, next) { response.json({}); }); export default router; </code>
Fastify Ecosystem 페이지에서 전체 플러그인 목록을 찾을 수 있습니다.
<code>// src/server.js import Fastify from "fastify"; import ExpressPlugin from "fastify-express"; import routes from "./routes.js"; const fastify = Fastify(); await fastify.register(ExpressPlugin); fastify.use("/user", routes); await fastify.listen(3000); </code>
검증
<code>mkdir express-to-fastify-migration cd express-to-fastify-migration npm init -y </code>
<code> app.get("/user/:id", async (request) => await getUser(request.params.id));
</code>
오류 처리
Fastify는 오류 처리 기능을 명시 적으로 지정할 수있는 seterRorHandler () 메소드를 제공합니다. 이는 Express와 다릅니다. 오류 처리 미들웨어는 허용하는 매개 변수 (err, req, res, next)로만 구별 할 수 있으며 특정 순서로 추가해야합니다.
결론
이 기사에서는 기존 Node.js 응용 프로그램을 Express에서 Fastify로 마이그레이션하는 방법을 배웠습니다. 우리는 이미 Fastify-Express 플러그인이 기존 응용 프로그램을 점차 마이그레이션하는 데 어떻게 도움이되는지 이미 배웠습니다. 이를 통해 응용 프로그램의 일부가 여전히 Express를 사용하는 경우에도 Fastify가 제공하는 기능의 혜택을받을 수 있습니다.
이 기사의 샘플 코드. 코드를 탐색 하고이 기사에서 구축 한 응용 프로그램을 실행하십시오.
Fastify에는 응용 프로그램에서 오류를 처리하는 데 사용할 수있는 내장 오류 처리 메커니즘이 있습니다. 특정 경로 또는 전체 응용 프로그램에 대해 사용자 정의 오류 처리기를 정의 할 수 있습니다. Fastify는 또한 Async/Await 구문을 지원하여 Express보다 오류 처리가 더 직접적으로 만듭니다.
Hook는 Fastify의 강력한 기능으로 요청/응답 라이프 사이클의 여러 단계에서 사용자 정의 코드를 실행할 수 있습니다. 후크를 사용하여 요청 또는 응답을 수정하고 인증을 수행하고, 레코드 요청 등을 수행 할 수 있습니다. Fastify는 "Onrequest", "Prehandler", "Onsend"및 "OnResponse"를 포함한 여러 후크를 지원합니다.
플러그인은 응용 프로그램의 기능을 확장 할 수있는 Fastify의 주요 기능입니다. 플러그인을 사용하여 새로운 기능을 추가하거나 다른 서비스와 통합하거나 애플리케이션 논리를 캡슐화 할 수 있습니다. Fastify에는 풍부한 플러그인 생태계가 있으며 자신의 플러그인도 만들 수 있습니다.
Fastify에서는 라우팅 핸들러에게 전달 된 "답장"객체를 사용하여 응답을 보낼 수 있습니다. "Send", "Code", "Header"및 "Type"을 포함하여 "Reply"객체에 응답을 보내는 방법에는 여러 가지가 있습니다. Fastify는 또한 성능에 대한 JSON 응답을 자동으로 직렬화합니다.
Fastify는 JSON 스키마를 사용하여 요청 및 응답 확인을 지원합니다. 경로의 패턴을 정의 할 수 있으며 Fastify는 이러한 패턴에 따라 들어오는 요청 및 나가는 응답을 자동으로 확인합니다. 이를 통해 오류를 조기에 감지하고 응용 프로그램 신뢰성을 향상시킵니다.
위 내용은 앱을 Express에서 Fastify로 마이그레이션하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!