반응형
Nuxt server Middleware가 API에서 json을 가져옵니다.
301.json에서 리다이렉트를 받는 대신 json을 반환하는 api에 요청을 하고 싶습니다.
사용하고 있는 것은@nuxtjs/axios
모듈.
const redirects = require('../301.json');
export default function (req, res, next) {
const redirect = redirects.find(r => r.from === req.url);
if (redirect) {
console.log('redirect: ${redirect.from} => ${redirect.to}');
res.writeHead(301, { Location: redirect.to });
res.end();
} else {
next();
}
}
원답
@Dominoch의 답변을 기반으로 JSON만 반환하려면 .json() 도우미를 사용합니다.자동으로 content-type을 application/json으로 설정하고 stringify를 전달 객체로 지정합니다.
편집:
우리가 여기서 하고 있는 일을 명확히 하기 위해, 우리는 당신의301.json
Nuxt의 미들웨어 작성 방법을 사용하여 다음을 수행합니다.
- 임의의 루트에 재사용할 수 있는 범용 핸들러를 정의합니다.
- 핸들러를 사용하는 패스를 명시적으로 정의합니다(당신이 301.json이라고 가정합니다).
301.json이 실제로는 리다이렉트하는 경로의 배열일 경우.map()
개인적으로는 그렇지 않습니다.어떤 경로가 리다이렉트 되는지는 즉시 명확하지 않기 때문입니다(마지막 샘플 참조).단, 패스가 어레이에 포함되어 있는지 여부를 체크하는 글로벌 미들웨어(요청마다 실행)를 만드는 것은 결코 피해야 합니다.<- 어레이 내의 각 항목에 대한 루트 처리가 길어집니다.사용..map()
는 모든 요구를 핸들러를 통해 송신하는 것이 아니라 nuxt에 의해 루트 조회가 이루어집니다(이것은 이미 행해지고 있습니다).
// some-api-endpoint.js
import axios from 'axios'
export default {
path: '/endpoint'
handler: async (req, res) => {
const { data } = await axios.get('some-request')
res.json(data)
}
}
그런 다음 nuxt.config.js에서 다음을 수행합니다.
// nuxt.config.js
module.exports = {
// some other exported properties ...
serverMiddleware: [
{ path: '/endpoint', handler: '~/path/to/some-api-endpoint.js' },
]
}
301.json이 실제로는 경로 배열일 경우:
// nuxt.config.js
const routes = require('../301.json');
module.exports = {
// some other exported properties ...
serverMiddleware: routes.map(path =>
({ path, handler: '~/path/to/some-api-endpoint.js' }))
}
또는 다른 미들웨어가 있는 경우:
// nuxt.config.js
const routes = require('../301.json');
module.exports = {
// some other exported properties ...
serverMiddleware: [
...routes.map(path =>
({ path, handler: '~/path/to/some-api-endpoint.js' })),
... // Other middlewares
}
제가 한 일은 다음과 같습니다. 효과가 있었던 것 같습니다.
//uri-path.js
import axios from 'axios'
export default {
path: '/uri/path',
async handler (req, res) {
const { data } = await axios.get('http://127.0.0.1:8000/uri/path')
res.setHeader('Content-Type', 'text/html')
res.end(data)
}
}
언급URL : https://stackoverflow.com/questions/52904480/nuxt-servermiddleware-get-json-from-api
반응형
'programing' 카테고리의 다른 글
매트릭스의 인덱스를 1차원 배열(C++)에 매핑하려면 어떻게 해야 합니까? (0) | 2022.08.07 |
---|---|
정수 나눗셈의 동작은 무엇입니까? (0) | 2022.08.07 |
Java의 XML 해석에 가장 적합한 라이브러리는 무엇입니까? (0) | 2022.08.07 |
어레이를 인라인으로 선언할 방법이 있습니까? (0) | 2022.08.07 |
C 메모리 관리 (0) | 2022.08.07 |