Next.js의 가벼운 미들웨어 및 경로 처리 솔루션 direx에 의해 구동 되나요?
$ npm install connext-js
Connext의 새 인스턴스를 초기화하십시오.
const Connext = require ( 'connext-js' ) ;
const app = Connext ( ) ; Connext는 글로벌 및 유연한 경로 별 미들웨어를 지원하는 Express 스타일 구문이있는 Next.js의 미들웨어 솔루션입니다. Global Middleware의 경우 global.js 컨트롤러 파일을 포함 해야하는 controllers 폴더를 작성해야합니다. API 로직을 모듈화하는 방법으로 다른 미들웨어 용 컨트롤러 파일을 만드는 것이 좋습니다.
connext 사용하여 경로 설정은 Express에서 경로를 설정하는 것과 매우 유사합니다.
모든 유효한 HTTP 요청 방법에는 Connext 객체에 관련 메소드가 있습니다.
app . get ( ) ;
app . post ( ) ;
app . put ( ) ;
app . delete ( ) ;
app . head ( ) ;
app . trace ( ) ;
app . patch ( ) ;
app . options ( ) ;
app . connect ( ) ;Connext는 모든 정적 또는 쿼리 API 엔드 포인트를 지원합니다. 동적 라우팅 지원이 곧 출시 될 예정입니다. ⚡️
connext 에서는 Next.js에서 사용 가능한 요청 객체 에 액세스 할 수 있으며 해당 액세스는 Express와 마찬가지로 미들웨어 체인을 통해 지속됩니다! 사용 가능한 속성은 req.url , req.method 및 req.body 입니다.
Express와 달리 데이터를 저장 해야하는 경우 저장하려는 데이터를 사용하여 응답 객체 에 키를 추가 할 수 있습니다. 이것은 단순히 응답 객체를 확대하고 요청의 수명주기 전체 에서이 객체를 계속 유지합니다. 전:
response . data = JSON . stringify ( data ) ;
response . match = true ;
response . array = [ 'I' m the data you need '];예제 파일 구조 :
├── ...
├── controllers
│ ├── global.js # required for global middleware
│ └── middleware.js # suggested for modularization of middleware functions
├── pages # required folder for routes in Next.js
│ └── api # required folder for API routes in Next.js
└── ...
Connext의 Global Middleware 기능을 사용하려면 controllers 라는 폴더에 global.js 파일을 작성해야합니다. controllers 폴더는 pages 폴더와 동일한 수준이어야하며 global.js 파일은 배열 을 내보내야합니다.
connext next() 의 호출로 무언가가 전달 될 때마다 실행되는 간단한 글로벌 내장 오류 핸들러가 있습니다. 자신의 오류 핸들러를 사용하려면 global.js 에서 내보내기 배열의 마지막 요소로 정의하십시오.
Global.js 예제
// a global middleware function
const globalOne = ( req , res , next ) => {
console . log ( 'this the first function that runs!' ) ;
return next ( ) ;
} ;
// another global middleware function
const globalTwo = ( req , res , next ) => {
console . log ( 'another one!' ) ;
return next ( ) ;
} ;
// global error handler
const errorHandler = ( err , req , res , next ) => {
return res . status ( 500 ) . send ( 'an error occurred' ) ;
} ;
// export your array of global middleware
module . exports = [ globalOne , globalTwo , errorHandler ] ; controllers 파일의 하나 이상의 파일에서 다른 미들웨어를 모듈화하여 코드를 읽을 수 있고 디버그하기 쉽게 유지하는 것이 좋습니다.
Middleware.js 예제
const middlewareController = { } ;
middlewareController . functionOne = ( req , res , next ) => {
// middleware functionality here
return next ( ) ;
}
middlewareController . functionTwo = ( req , res , next ) => {
// middleware functionality here
return next ( ) ;
}
module . exports = middlewareController ;Express와 마찬가지로 Connext의 모든 메소드에는 유효한 HTTP 방법으로 응답하는 문자열이 있습니다.
예를 들면 : GET, DELETE, POST 등
Connext를 사용하여 경로를 정의하려면 Next.js의 필수 api 폴더 내부에 JavaScript 파일을 추가하십시오.
├── pages # required folder for routes in Next.js
│ └── api # required folder for API routes in Next.js
│ └── exampleRoute.js # created route file inside of API folder
경로 파일 내부
const Connext = require ( 'Connext-js' ) ;
const middleware = require ( '../../controllers/middleware' ) ;
const app = Connext ( ) ;
app . get ( '/api/exampleRoute' , middleware . one , middleware . two , ( req , res ) => {
res . status ( 200 ) . json ( res . example ) ;
} ) ;
app . post ( '/api/exampleRoute' , middleware . three , ( req , res ) => {
res . status ( 200 ) . json ( res . example ) ;
} ) ;
app . delete ( '/api/exampleRoute' , middleware . four , ( req , res ) => {
res . status ( 200 ) . json ( res . example ) ;
} ) ;
export default app ;사라 파워
엘리 갈리폴리
이즈미 사토
알렉스 강