본문 바로가기
카테고리 없음

next.js 로 엔드포인트 만들기;

by 띠리에이터 2024. 2. 21.

next.js 로 엔드포인트 만들기;

pages폴더 안에 api폴더를 만들고 파일을 생성하면 api의 경로가 된다

-> http://localhost:3000/api/links 이런 식으로

 

const links=(req, res)=>{
  res.send('Hello, api') // res.send는 응답을 보내는 메서드
} 

export default links

links 파일에 api를 요청하는 코드를 넣고 주소로 들어가면 

이렇게 나온다.


다이나믹 라우팅도 활용 가능

-> http://localhost:3000/api/short-links/(아무거나 넣기)

 [id.js] 파일에 코드를 적음 

const handler=(req, res)=>{
  res.send('hello next') // res.send는 응답을 보내는 메서드
} 

export default handler

//다이나믹 라우팅을 이용해서 엔드포인트를 만들었다.


1. api 의 첫번재 파라미터 req (request)
  • request에 대한 정보를 가져올 때 사용
  • params값과 query 사용 가능 
const handler=(req, res)=>{
  res.send(req.query) // res.send는 응답을 보내는 메서드
} 

export default handler


GET http://localhost:3000/api/short-links/1234?q=const
  • request의 query값을 확인하면 값을 볼 수 있다.

  • 객체의 id 프로퍼티로는 123 , 쿼리는 const  들어가있음  / 같은 객체에 담겨있다. 

  • 메소드를 다룰때는 switch를 사용할 수도 잇다.
const handler=(req, res)=>{
  switch(req.method){
    case 'GET':
      res.send('GET request')
      break
    case 'POST':
      res.send('POST request')
      break
    default:
      res.status(405).end() 
  }
} 

export default handler

이런식으로 메소드 값에 따라서 다르게 처리 가능

 

2. response 사용법
  • 함수를 메소드 체이닝 방식으로 사용
const handler=(req, res)=>{
  switch(req.method){
    case 'POST':
      res.status(201).send({
        title:'next.js',
        url:'https://nextjs.org'
      });
      break;
      
    case 'GET':
      res.send([
        {
        id:'1',
        title:'google',
        url:'https://google.com'
      },
      {
        id:'2',
        title:'naver',
        url:'https://naver.com'
      },
      {
        id:'3',
        title:'daum',
        url:'https://daum.net'
      }
      ]);
      break;
      default:
        res.status(404).end()
      
  }
} 

export default handler

//GET메소드로 요청이 오면 201 상태코드로 주소 목록을 보내줌
//POST메소드로 요청이 오면 새로운 주소를 추가함

 

- 메소드 체이닝은 메소드를 연속적으로 호출하는 것을 말한다.
-> res.status(404).end() -> status(404)를 호출한 후 end()를 호출

- send메소드는 문자열이나 객체를 보낼 수 있는 메소드.
- 자바스크립트 객체를 아규먼트로 전달하면 ContentType 헤더도 알아서 보내줌.


  • request 객체
    1. method : 문자열 타입 / 리퀘스트로 들어온 http 메소드 값
    2. query : 객체 타입 / 쿼리스트링이나 next.js에서 사용하는 params값이 들어있는 객체
    3. body : any 타입 / 리퀘스트의 바디 값
    4. cookie : 객체 타입 / 리퀘스트의 쿠키가 key/value 로 들어있는 객체
  • response 객체
    1. status () : 함수 타입 / 리스폰스로 보낼 http 상태 코드를 지정
    2. send () : 함수 타입 / 리스폰스로 보낼 바디를 전달