• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

API를 사용하는 이유?

21.12.07 16:50 작성 조회수 629

2

API가 뭔지는 알겠습니다.

 

"객체(DTO)에 있는 값들을 JSON으로 반환하는 컨트롤러"

 

근데 이것을 왜 쓰는지는 감이 안옵니다.

만약 조회의 결과를 JSON으로 클라이언트에 반환한다 치면,

조회값이 엄청 많으니까 JSON으로 "축약"해서 보낸다는 느낌으로 이해 했는데 맞나요..?

클라이언트에서 서버로 왜 JSON으로 보내는지, 반대의 경우는 왜 그러는지 감이 안잡힙니다.


 

 

답변 2

·

답변을 작성해보세요.

0

김진영님의 프로필

김진영

질문자

2021.12.07

감사합니다.
클라이언트 서버간에 데이터를 서로 주고받기 위해 약속된 데이터의 "형태"로 이해하면 편하겠네요.


아래 설명도 문제없는 부분인지 한번 봐주시면 감사하겠습니다.

@PostMapping(value = "/order")
public String order(@RequestParam("memberId") Long memberId,
@RequestParam("itemId") Long itemId, @RequestParam("count") int count) {
orderService.order(memberId, itemId, count);
return "redirect:/orders";
}

이와 같이 클라이언트 측에서 x-www-form-urlencoded로 전송해서
서버에서는  @RequestParam으로 하여 이렇게 일일이 받아주는것이 아니라,

@PostMapping(value = "/order")
public String order(@RequestBody WantDto wantDto) {
orderService.order(wantDto.getMemberId() ... );
return "redirect:/orders";
}

이렇게 클라이언트측에서 JSON을 보내 줌으로써,
서버에서는 @RequestBody로 받은 Json을 쓸 수 있다 라고 해석 하면 문제없을까요?

OMG님의 프로필

OMG

2021.12.07

네 이해하고 계신게 맞습니다.

클라이언트에서 보낸 json 데이터를

서버(스프링)에서 dto객체로 받아서 서버단에서 사용하도록 구성한 코드로 보셔도 됩니다.

0

OMG님의 프로필

OMG

2021.12.07

안녕하세요. 김진영님, 공식 서포터즈 OMG입니다.

JSON으로 왜 반환 하는지, 왜 클라이언트 -> 서버, 서버 -> 클라이언트가 JSON으로 통신하는지에 대한 질문으로 이해하였습니다.

 

간단히 말씀드리면 서버에서 클라이언트가 보낸 정보를 해석하기 위해, 클라이언트도 서버에서 보낸 데이터를 해석하기 위해 서로 규칙된 형태로 데이터를 전달하기 위해 사용하는 객체로 보시면 됩니다.

JSON이 널리 사용되기 이전에는 XML 형태로 데이터를 주고 받았다고 합니다. JSON에 비해 형태가 복잡하고 길죠.

가령 위의 XML 형태의 데이터를 JSON으로 표현한다면 어떨까요?

 

[
    {
        "id":"34594",
        "firstName":"Heather",
        "lastName":"Banks",
        "hireDate":"1/19/1998",
        "deptCode":"BB001",
        "salary":"72000"
    },
    {
        "id":"34593",
        "firstName":"Tina",
        "lastName":"Young",
        "hireDate":"4/1/2010",
        "deptCode":"BB001",
        "salary":"6500"
    }
]

 

사람마다 느끼는게 다르겠지만 불필요한 닫는 태그도 없고, 저는 아래 JSON 형태가 더 보기 깔끔하다고 생각됩니다.

또 다른 예를 들어보면,

스프링으로 만든 A라는 API는 JSON 형태로 반환합니다.

근데 노드로 만든 B API는 "value":"key" 새로운 형태의 NOSJ을 반환한다고 하면

클라이언트는 기존의 JSON 규약외의 NOSJ라는 새로운 형태의 데이터를 해석해야하는 문제점이 발생합니다.

서버와 클라이언트가 각기 다른 형태의 데이터에 대한 해석을 해야하는 문제점을 해결하기 위해 통일된 형태의 JSON을 이용한다고 보시면 됩니다.

감사합니다.