이 간단한 방법으로 모든 Express 경로에 수동으로 '/api'를 추가하지 마십시오.
7917 단어 javascriptexpressnode
각 Express 경로의 시작 부분에 항상 수동으로 '/api'를 추가해야 해서 좌절한 적이 있습니까? 일반적으로 이것이 두 가지 형태로 나타납니다.
형식 1:
app.js
파일:app.use('/api/users', require('./routes/users'))
app.use('/api/posts', require('./routes/posts'))
app.use('/api/comments', require('./routes/comments'))
app.use('/api/subscriptions', require('./routes/subscriptions'))
형식 2:
경로 파일에서:
router.post('/api/users', users.createUser)
router.post('/api/posts', blogpost.postBlogpost)
router.post('/api/comments', comment.postComment)
router.post('/api/subscriptions', subscription.addSubscription)
어느 쪽이든- 지저분해 보입니다. 복사/붙여넣기를 하지 않는 경우 매번 추가해야 한다는 것을 기억해야 하며 더 나은 방법이 있어야 할 것 같습니다.
청소하자
다행히도 이에 대한 수정은 정말 간단합니다.
경로 파일에서 각 경로에서 '/api'를 제거합니다.
const express = require('express')
const router = express.Router()
router.post('/users', users.createUser)
router.post('/posts', blogpost.postBlogpost)
router.post('/comments', comment.postComment)
router.post('/subscriptions', subscription.addSubscription)
module.exports = router
그리고
app.js
(또는 server.js
, Express 서버를 설정할 때마다):const express = require('express')
const app = express()
const routes = require('./routes')
app.use('/api', routes) // routes is our routes file above
따라서 각 경로에 수동으로 '/api'를 추가하는 대신 Express 라우터를
app.js
로 가져오고 '/api'를 앞에 추가합니다. 이번에는 한 번만! -에 app.use()
어떻게 작동합니까?
여기서 기본적으로 수행한 작업은 파이프라인을 구성하는 것입니다.
app
를 기본 앱으로, router
(라우트 파일)을 "하위 앱"으로 간주해 보겠습니다.애플리케이션이 웹 요청을 수신하면 먼저
app.use('/api', routes)
에 도달합니다. 요청이 '/api/blah/blah'와 같은 것과 일치하는 엔드포인트로 전송된 경우 app.use('/api', routes)
에서 일치하고 거기에서 나머지 경로를 포함하는 하위 앱 라우터로 라우팅됩니다.따라서 Express는 이 파이프라인을 구축하므로 더 이상 각 경로에 수동으로 '/api'를 추가할 필요가 없습니다!
마지막 한가지!
저는 Node와 JavaScript를 더 쉽게 이해할 수 있도록 많은 새로운 콘텐츠를 작성하고 있습니다. 때로는 복잡할 필요가 없다고 생각하기 때문에 더 쉽습니다. 이 게시물이 마음에 들고 도움이 된다면here's that link again 내 뉴스레터를 구독하세요!
Reference
이 문제에 관하여(이 간단한 방법으로 모든 Express 경로에 수동으로 '/api'를 추가하지 마십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ccleary00/avoid-manually-prepending-api-to-every-express-route-with-this-simple-method-1m44텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)