TIL

24.02.26

아리단길아조씨 2024. 2. 26. 22:01
728x90

쿼리스트링 공부

path(경로) 부분에 따라서 우리의 애플리케이션들 각각 다른 동작을 수행한다.
(언제나 똑같은 결과를 보여준다는 것을 시사한다.)

http://a.com/topic?id=1 topic이라는 라우터에 id가 1이라는 값을 전달하는 것
id가 1인 값을 처리를 해서 화면에 띄워주면 된다.
path뒤에 오는 ? 이후의 것들을 쿼리스트링이라고 부름

쿼리스트링은 우리의 앱이 사용자에 요청을 더 섬세하게 처리를 해줄 수 있게 해준다.
같은 경우 내에서 쿼리스트링으로 다양한 결과를 낼 수 있다.

http://a.com/topic?id=1 topic === URL
프로토콜 - 서버 컴퓨터가 위하는 주소 - 경로(path): 라우터와 연결이 된다. - 쿼리스트링


topic?id=1 에서 topic 라우터에서 어떻게 id 값을 받을 수 있는가?
app.get("/topic", (req, res) => {
  res.send(req.query.id); // req의 query 객체의 id라는 프로퍼티의 값으로 들어온다 라는 뜻
});
http://localhost:8000/topic/?id=1 // 브라우저에 1이 표시됨

여러가지의 값을 보여주고 싶을 때?
app.get("/topic", (req, res) => {
  res.send(req.query.id + ',' + req.query.name);
});
http://localhost:8000/topic/?id=1&name=김삿갓
쿼리스트링은 ?로 시작하고 값과 값을 구분할 때는 구분자 &을 사용하여 구분을 해준다

쿼리스트링을 통해서 우리가 애플리케이션에 전달할 수 있는 값은 하나가 아닌 여러개일 수 있음을 시사한다.


  // 펫 타입별로 찾아보기
  findPetsByType = async (petType) => {
    const findedPetsByType = await this.prisma.pets.findMany({
      where: { petType: petType },
    });
    if (!findedPetsByType) {
      throw new Error("존재하지 않는 펫입니다.");
    }
    return findedPetsByType;
  };
}
 // 펫 타입별로 찾아보기
  findPetsByType = async (petType) => {
    try {
      if (!petType) {
        throw new Error("petType을 선택해주세요.");
      }

      const pets = await petRepository.findPetsByType(petType);

      return pets.map((pet) => {
        return {
          name: pet.name,
          petType: pet.petType,
          age: pet.age,
          pet_image: pet.pet_image,
        };
      });
    } catch (err) {
      next(err);
    }
  };
 // 펫 타입별로 찾아보기
  findPetsByType = async (req, res, next) => {
    try {
      const { petType } = req.query;

      const pets = await this.petService.findPetsByType(petType);

      return res.status(200).json({ data: pets });
    } catch (err) {
      next(err);
    }
  };

 

'TIL' 카테고리의 다른 글

24.02.29  (0) 2024.02.29
24.02.27  (0) 2024.02.28
24-02-23  (0) 2024.02.26
24.02.22  (0) 2024.02.23
24.02.21  (0) 2024.02.21