Next.js: Next.js 9 рдПрдкреАрдЖрдИ рд░реВрдЯ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдиреБрд░реЛрдз рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдЬреБрд▓ре░ 2019  ┬╖  23рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vercel/next.js

Next.js рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди

рдореИрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдПрдкреАрдЖрдИ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд╛рдорд╛рдиреНрдп рд▓рд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХреЛрдб рд╣реИ

 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 рдирд╣реАрдВ рдорд┐рд▓рд╛ рджреЗрдЧрд╛ред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

рд╢реБрдХреНрд░рд┐рдпрд╛

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 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)
})

рд╕рднреА 23 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрд░реЗ @ 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'
  }
};

рдзрдиреНрдпрд╡рд╛рдж! рдареАрдХ рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЖрдкрдХреЗ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдлрд╛рдпрд░рдмреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмреЙрдбреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдорд┐рд▓ рдЧрдпрд╛ рд▓реЗрдХрд┐рди рдПрдкреАрдЖрдИ рд░реВрдЯ рдХреЗ рдЕрдВрджрд░ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рд╢рд░реАрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рд▓ рд╣реЛ рдЬрд╛рддреАрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

pie6k picture pie6k  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jesselee34 picture jesselee34  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

flybayer picture flybayer  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

YarivGilad picture YarivGilad  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lixiaoyan picture lixiaoyan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ