Java Script/Node.js

[Node.js] HTTP요청 ② GET기본 응용

웹개발자(진) 2024. 5. 10. 17:17
반응형
잡담

저번시간에 공부했던 GET방식에 이어서 오늘은 GET방식을 응용하는 기본적인 방법에 대해서 공부할 예정입니다. 데이터 이동에 JSON방식을 많이 활용하기 때문에 JSON형식을 이용해서 요청하고 또 뒤에 나올 POST를 이용해서 데이터를 전달하는 방법에 대해 공부할까 합니다.


1. GET방식 응용

 

JSON 형식 요청

const express = require('express')
const app = express()
const port = 3000

let movieList = [
        { id: 1, title: '아바타 물의길', running: 130, rating: 9.5 },
        { id: 2, title: '반지의 제왕', running: 125, rating: 8.2 },
        { id: 3, title: '해리포터 불의잔', running: 135, rating: 8.5 }
]

app.get('/movies', (req, res) => {
        res.send(movieList)
})

위의 코드는 Express.js를 사용하여 '/movies' 엔드포인트에 대한 GET 요청을 처리하는 방법을 보여줍니다. 이 코드는 '/movies' 엔드포인트에 대한 GET 요청을 처리합니다. 요청이 발생하면 서버는 movieList 배열을 JSON 형식으로 응답합니다.

이렇게 하면 '/movies' 엔드포인트에 대한 GET 요청을 수신하면 서버가 영화 목록을 응답으로 반환합니다.

movieList JSON 값 출력

 


List 특정값 요청

const express = require('express')
const app = express()
const port = 3000

let movieList = [
        { id: 1, title: '아바타 물의길', running: 130, rating: 9.5 },
        { id: 2, title: '반지의 제왕', running: 125, rating: 8.2 },
        { id: 3, title: '해리포터 불의잔', running: 135, rating: 8.5 }
]

//http://localhost:3000/movies/2
app.get('/movies/:id', (req, res) => {
        console.log('/movies/:id')
        console.log(req.params)//request객체 안의 parameters객체
        console.log(req.params.id)//2
        const id = parseInt(req.params.id)
        let movieObj = '';
        for (var i = 0; i < movieList.length; i++) {
                if (id === movieList[i].id)
                        movieObj = movieList[i]
        }
        res.send(movieObj)
})

 

  • for (var i = 0; i < movieList.length; i++) {... }: movieList 배열을 반복하여 요청으로부터 받은 id 값과 일치하는 영화를 찾습니다.
  • if (id === movieList [i]. id) movieObj = movieList [i]: 현재 반복 중인 영화 객체의 id 값이 요청으로부터 받은 id 값과 일치하는지 확인하고, 일치하는 경우 movieObj에 해당 영화 객체를 할당합니다.

 

http://localhost:3000/movies/2 에 대한 출력값


 

입력값이 포함된 내용 검색

const express = require('express')
const app = express()
const port = 3000

var boardList = [
        { no: 1, title: '시스템 장애신고 전화번호 070-8823-6974입니다.', contents: '글1 내용', date: '2022-09-01' },
        { no: 2, title: '2018년 시민안전테마파크 예약일정 공지사항', contents: '글2 내용', date: '2022-10-01' },
        { no: 3, title: '통합예약시스템 정상운영 안내', contents: '글3 내용', date: '2022-11-01' },
        { no: 4, title: '대구문화예술회관 시설대관(공연장,전시실)관련 안내', contents: '글4 내용', date: '2022-12-01' },
        { no: 5, title: '체육시설사용허가신청 관련 서식', contents: '글5 내용', date: '2023-01-01' },
        { no: 6, title: '통합예약시스템 서비스 개시 "옥의 티를 찾아주세요"', contents: '글6 내용', date: '2023-02-01' },
        { no: 7, title: '파계 오토 캠핑장 이용중단안내(13일~15일).', contents: '글7 내용', date: '2023-03-01' },
        { no: 8, title: '동부여성문화회관 제2기 교육생 모집', contents: '글8 내용', date: '2023-04-01' },
        { no: 9, title: '팔공산 파계오토캠핑장 예약시 주의사항 안내', contents: '글9 내용', date: '2023-05-01' },
        { no: 10, title: '동부여성문화회관 야간 심리상담실 운영(화,목).', contents: '글10 내용', date: '2023-06-01' }
];

//get - http://localhost:3000/search1?title=시스템
app.get('/search1', (req, res) => {
        const title = req.query.title;
        console.log(title)
        let boardObj = [];
        for (let i = 0; i < boardList.length; i++) {
                if (boardList[i].title.includes(title)) {
                        boardObj.push(boardList[i]);
                }
        }
        console.log(boardObj)
        res.send(boardObj);
});

위의 코드는 Express.js 애플리케이션에서 /search1 엔드포인트에 대한 GET 요청을 처리하는 라우터 핸들러입니다. 이 코드는 다음과 같이 구성됩니다:

  • const title = req.query.title;: 요청 객체의 query 속성을 사용하여 URL 쿼리 문자열에서 title 매개변수 값을 가져옵니다. 이 코드는 클라이언트가 요청한 URL에서 title 매개변수의 값을 추출합니다.
  • let boardObj = [];: 요청된 title 값과 일치하는 게시물을 담을 빈 배열 boardObj를 선언합니다. list으로 변수를 선언하여 include를 통해 값이 하나만 출력되는 것을 list에 추가하여 일치하는 모든 값들을 출력하도록 할 수 있습니다.
  •  (boardList[i].title.includes(title)) {... }: 현재 반복 중인 게시물의 제목이 요청된 title 값을 포함하고 있는지 확인합니다.
  • boardObj.push(boardList [i]);: 일치하는 경우, 해당 게시물을 boardObj 배열에 추가합니다.

'http://localhost:3000/search1? title=시스템'URL을 통해 title이 시스템과 일치하는 값을 JSON 배열에서 찾아서 출력하게 됩니다.

http://localhost:3000/search1?title=시스템 "시스템" 단어가 들어가는 출력값

 


 

글을 마치며

오늘은 GET방식의 응용에 대해서 예제를 통해 배워보았습니다. 기본적으로 request에 담겨오는 데이터를 param 속성을 이용해서 꺼내와서 console을 이용해서 값을 확인하거나 받아온 값을 이용해서 다른 작업을 할 수 있었습니다. 다음시간에는 POST방식을 이용해서 값을 전달해 보도록 하겠습니다. 기본적으로 HTML을 이용해서 입력받은 데이터를 submit 하지만 fastAPI에 docs처럼 POSTMAN이라는 프로그램을 이용해서 UI를 따로 만들지 않고 전달하는 방법을 같이 배워볼까 합니다. 감사합니다.

반응형