본문 바로가기
SpartaCodingClub/TIL

[TIL] URL에서 값 가져오기!! - Querystring

by pin9___9 2022. 11. 1.
728x90

쿼리스트링(Querystring)이란?

지정된 매개변수에 값을 할당하는 URL의 일부입니다. 쿼리스트링에는 일반적으로 웹 브라우저나 기타 클라이언트 응용 프로그램에서 기본 URL에 추가한 필드가 포함됩니다. 웹 서버는 URL 경로를 기반으로 파일 시스템에서 파일을 읽거나 리소스 유형에 특정한 논리를 사용하여 요청을 처리하여 HTTP 요청을 처리할 수 있습니다.

출처 : 위키피디아

형식

기본적으로 "http://localhost/path?querystring" 형식이며 URL 뒤에 덧붙여서 추가적인 정보를 서버에 전달하고 클라이언트가 어떤 리소스에 접근하고 싶어 하는지 정보를 담아놓습니다.

  • URL과 조건문 사이에 ' ? ' 구분자를 두고 필요한 파라미터 값을 적습니다.
  • 파라미터가 여러 개일 경우 ' & '를 붙여 여러 개의 파라미터를 넘길 수 있습니다.

 

예제 - 현재 미니 프로젝트 진행 부분!

사진을 클릭하면 소개 페이지로 넘어가는데 파라미터에 key값을 보내서 그 값에 맞는 정보를 DB에서 가져와 보여주는 서비스를 구현하려고 합니다.

1) 메인 페이지 부분

우선 메인 페이지에 DB에 저장되어 있는 팀원들의 사진을 뿌려줍니다. 우선 정식 프로젝트가 아니고 로컬에서 구현하기에 이미지는 static/image에 저장을 해두고 가져오는 형식을 취했습니다.

 

1. $(document).ready()

//index.html

$(document).ready(function () {
            show_photo();
        });

첫째로  $(document).ready()를 사용하여 DOM 객체가 생성되는 시점에서 함수를 실행시켜 페이지에 팀원들의 사진을 보여줍니다.

 

2. ajax

//index.html

		function show_photo() {
            $.ajax({
                type: 'GET',
                url: '/details',
                data: {},
                success: function (response) {
                    let rows = response['user']
                    for (let i = 0; i < rows.length; i++) {
                        let profile_img = rows[i]['profile_img']
                        let key = rows[i]['key']


                        let temp_html = ` <div class="team-intro__imgbox__1">
                                                  <form action="http://localhost:5000/detail">
                                                  <input type="text" name="key" value="${key}" style="display: none">
                                                      <input type="image" src="${profile_img}">
                                                  </form>
                                              </div>`

                        $('#team_img').append(temp_html)
                    }
                }
            });
        }

사진들을 뿌려주는 함수인데 ajax를 사용하여 /detail에 저장되어 있는 JSON 형식의 리스트들을 가져옵니다.

이후, for반복문을 사용하여 리스트 내에 있는 profile_img와 key값을 전부 가져온 후 그 값들을 활용하여 form태그로 파라미터 값을 만들어줍니다.

 

2) 상세 페이지 부분

1. param 값 가져오기

<script>
            const qs = window.location.search.substring(1); //URL에서 ?뒤 param을 가져옵니다.
            const params = qs.split("&")[0]; //가져온 param을 &단위로 끊고 그 중 첫 번째 값을 가져옵니다.
            let num = Number(String(params).split('=')[1]) //가져온 첫 번째 값에서 = 기준으로 자르고 두 번째 값을 숫자로 변환해 가져옵니다.
            show_comments(num)

 

2. 값에 해당하는 정보들을 뿌려주기

function show_detail() {
                $.ajax({
                    type: 'GET',
                    url: '/details',
                    data: {},
                    success: function (response) {
                        let rows = response['user']
                            let name = rows[num]['name']
                            let age = rows[num]['age']
                            let style = rows[num]['style']
                            let blog = rows[num]['blog']
                            let profile_img = rows[num]['profile_img']


                            document.getElementById("my_name").innerHTML = name
                            document.getElementById("age1").innerHTML = `${age}`
                            document.getElementById("style1").innerHTML = `${style}`
                            document.getElementById("blog1").innerHTML = `${blog}`
                            document.getElementById("profileimg1").src = profile_img


                    }
                });
            }

가져온 변수 num에 맞는 값들을 가져와 HTML로 뿌려줍니다!!

 

마치며

페이지 이동시 어떻게 값을 보내서 원하는 값을 DB에서 가져올지 고민을 많이 했는데 튜터님의 말씀과 과제, 아는 동생의 Hint로 잘 해결했습니다. 확실히 직접 구글링 하고 힘들게 해결한 코드들은 기억에 잘 남는 것 같습니다.😎😎

728x90

'SpartaCodingClub > TIL' 카테고리의 다른 글

[TIL] 1차 프로젝트 S.A  (0) 2022.11.18
[TIL] PyCharm 코드 비교하기!!  (0) 2022.11.04

댓글