рдореИрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдПрдкреАрдЖрдИ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд╛рдорд╛рдиреНрдп рд▓рд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХреЛрдб рд╣реИ
const response = await fetch(`${process.env.SERVER}/api/lyric?id=${song.song_id}`);
рдпрд╣ ./рдкреЗрдЬ/рдПрдкреАрдЖрдИ рдХреЗ рдЕрдВрджрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдХреЛрдб рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ
const response = await fetch(`${process.env.SERVER}/api/lyric`, {
method: 'POST',
body: JSON.stringify({id: song.song_id})
});
рдпрд╣ рдореБрдЭреЗ 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ рджреЗрдЧрд╛ред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ?
рд╢реБрдХреНрд░рд┐рдпрд╛
рдЕрд░реЗ @ zluo01 , рдкреВрд░реНрдг рдкреБрдирд░реБрддреНрдкрд╛рджрди рдкреНрд░рджрд╛рди рдХрд░реЗрдВ, рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк POST
рд▓рд┐рдП рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рдкрд╛рдП? рдПрдкреАрдЖрдИ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдмрд╣реБрдд рдХрдо рд╣реИ, рдФрд░ рдореБрдЭреЗ GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд░реНрдЧ рдкрд░ рднреЗрдЬреЗ рдЧрдП POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП 404 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИ
рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рдкрд╛рдП? рдПрдкреАрдЖрдИ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдмрд╣реБрдд рдХрдо рд╣реИ, рдФрд░ рдореБрдЭреЗ GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд░реНрдЧ рдкрд░ рднреЗрдЬреЗ рдЧрдП POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП 404 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИ
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдирд╣реАрдВ, рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЧреЗрдЯ рдФрд░ рд╕рд╛рдорд╛рди рдХреЛ рд╣реЗрдбрд░ рдХреЗ рдЕрдВрджрд░ рд░рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдкреВрд░реНрдг рдкреНрд░рдЬрдирди рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред
рдкреЛрд╕реНрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдкрд░ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗ
@stoplion рдЖрдк рдХреНрдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдмрдирд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдмрд╛рдж рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ?
рдЬрд╝рд░реВрд░
рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 404 рднреА рджреЗрдЦрддрд╛ рд╣реВрдВ:
const res = await fetch('/api/bookings', {
method: 'POST',
body: JSON.stringify({ hungry: true }),
headers: {
'Content-Type': 'application/json',
},
})
const data = await res.json()
рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╕рд╛рдордЧреНрд░реА api/bookings
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред рдпрд╣ рдХрднреА рдирд╣реАрдВ рдорд╛рд░рд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП now dev
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдЕрджреНрдпрддрди
рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ now dev
рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реА server.js
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рд╛ рдирд╣реАрдВ рдерд╛ред рдпрджрд┐ рдЖрдк рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛:
server.post('*', (req, res) => {
return handle(req, res)
})
@TommySorensen рдЗрд╕реЗ рдирд╡реАрдирддрдо рдХреИрдирд░реА рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХрднреА рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛? рдХреНрдпрд╛ рдЕрдЧрд▓реЗ v9 рдПрдкреАрдЖрдИ рд░реВрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХрднреА рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛? рдХреНрдпрд╛ рдЕрдЧрд▓реЗ v9 рдПрдкреАрдЖрдИ рд░реВрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рд╣рд╛рдВред рдмрд╕ рдПрдкреАрдЖрдИ рдорд╛рд░реНрдЧреЛрдВ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреНрд░рдпреЛрдЧ
@ huv1k рд░рд┐рд▓реАрдЬ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
@lifeiscontent рдХрд┐рд╕рдХрд╛ рд░рд┐рд▓реАрдЬ?
@ huv1k рдЬрдм
@lifeiscontent рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрдЧ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдкреЛрд╕реНрдЯ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдареАрдХ рд╕реЗ рдХреБрдЫ рд╣реИред рдХреГрдкрдпрд╛ рдкреВрд░реНрдг рдХреЛрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВ, рддрд╛рдХрд┐ рд╣рдо рдЬрд╛рдВрдЪ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░ рд╕рдХреЗрдВ ЁЯСН
рдЖрд╕рд╛рди рдЖрд╕рд╛рди
рдЖрдкрдХреЗ _рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░_ рдореЗрдВ
рдХрд░рдирд╛
server.use((req, res) => app.getRequestHandler()(req, res))
рд░реЗрдкреНрд░реЛ:
npx create-next-app --example with-firebase-authentication with-firebase-authentication-app
рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ api/test.js
export default (req, res) => {
console.log('api test', req.method)
res.json('ok')
}
Server.js рдореЗрдВ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ:
server.use((req, res) => app.getRequestHandler()(req, res))
yarn dev
рдЪрд▓рд╛рдПрдБ (рдпрд╛ node server.js
)
рдкреЛрд╕реНрдЯ рдХреЛ http://localhost рдкрд░ рднреЗрдЬреЗрдВ: 3000/api/test
рдЕрдкреЗрдХреНрд╖рд┐рдд: рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ api test POST
рд╡рд╛рд╕реНрддрд╡рд┐рдХ: рдХреЛрдИ рд▓реЙрдЧ рдирд╣реАрдВ, рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ рддрдХ рд▓рдВрдмрд┐рдд рд░рд╣рддрд╛ рд╣реИ
рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
server.get('*', (req, res) => {
return handle(req, res)
})
рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд:
server.all('*', (req, res) => {
return handle(req, res)
})
рд╣рдорд╛рд░реА рдЧрд▓рддреА рдорд┐рд▓реА: isomorphic-unfetch
рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ => рдЕрдкрдЧреНрд░реЗрдб рди рдХрд░реЗрдВ
рд╡реИрд╕реЗ, рдлрд╛рдпрд░рдмреЗрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛рдлреА рдкреБрд░рд╛рдиреА рд╣реИ:
firebase ^5.6.0 тЖТ ^7.2.1
firebase-admin ^5.8.2 тЖТ ^8.6.1
рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХрд╕реНрдЯрдо рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЕрднреА рддрдХ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрдИ рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдиреЗрдХреНрд╕реНрдЯрдЬреЗ рдПрдкреАрдЖрдИ рд░реВрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░ рдпрд╛ рдХреЗрд╡рд▓ рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░ рдХреЛ рд╡рд╣рд╛рдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХреИрд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░реЗрдВ: https://nextjs.org/docs#api -middlewares
@epranka @thgh , рдпрд╛рд░, рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдШрдВрдЯреЛрдВ рд▓рдЧ рдЧрдПред
рдореИрдВ рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рд░реВрдЯ рдкрд░ рдХреЛрдИ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред POST рдЕрдиреБрд░реЛрдз рд▓рдЯрдХреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди GET рдЕрдиреБрд░реЛрдз рдареАрдХ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдФрд░ рдЕрдЧрд░ рдореИрдВ рд╕реНрдерд╛рдиреАрдп рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рднреА рдареАрдХ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рдлрд╝рд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИред
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рдПрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░рддрд╛ рд╣реИред рддреЛ рдЖрдкрдХреЛ рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЕрдкрдиреЗ pages/api/[yourEndPoint].js
:
export const config = {
api: {
bodyParser: process.env.NODE_ENV !== 'production'
}
};
@TommySorensen рдЙрддреНрддрд░ рдиреЗ рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рдХрд░ рджрд┐рдпрд╛:
server.get("*", (req, res) => handle(req, res));
server.post("*", (req, res) => handle(req, res));
рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
@epranka @thgh , рдпрд╛рд░, рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдШрдВрдЯреЛрдВ рд▓рдЧ рдЧрдПред
рдореИрдВ рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рд░реВрдЯ рдкрд░ рдХреЛрдИ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред POST рдЕрдиреБрд░реЛрдз рд▓рдЯрдХреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди GET рдЕрдиреБрд░реЛрдз рдареАрдХ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдФрд░ рдЕрдЧрд░ рдореИрдВ рд╕реНрдерд╛рдиреАрдп рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рднреА рдареАрдХ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рдлрд╝рд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИред
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рдПрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░рддрд╛ рд╣реИред рддреЛ рдЖрдкрдХреЛ рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЕрдкрдиреЗ
pages/api/[yourEndPoint].js
:export const config = { api: { bodyParser: process.env.NODE_ENV !== 'production' } };
рдзрдиреНрдпрд╡рд╛рдж! рдареАрдХ рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЖрдкрдХреЗ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдлрд╛рдпрд░рдмреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмреЙрдбреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдорд┐рд▓ рдЧрдпрд╛ рд▓реЗрдХрд┐рди рдПрдкреАрдЖрдИ рд░реВрдЯ рдХреЗ рдЕрдВрджрд░ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рд╢рд░реАрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рд▓ рд╣реЛ рдЬрд╛рддреАрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 404 рднреА рджреЗрдЦрддрд╛ рд╣реВрдВ:
рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╕рд╛рдордЧреНрд░реА
api/bookings
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред рдпрд╣ рдХрднреА рдирд╣реАрдВ рдорд╛рд░рд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдПnow dev
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВрдЕрджреНрдпрддрди
рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣
now dev
рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реАserver.js
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рд╛ рдирд╣реАрдВ рдерд╛ред рдпрджрд┐ рдЖрдк рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛: