프론트에서 그린거 말고 api 반환값을 직접 좀 들여다봐야 할 때가 있다. 반환해야 될 값이 빠져있거나, 전달은 되는데 프론트 상에서 노출이 안되거나 하는 경우인데 지금 일하는 곳서는
- 프론트 단에서 노출 서버 API에 키워드와 조건 (이용자 정보) 등을 조합해 질의
- 노출 서버는 적절한 문서 조합을 반환
하는데, 이 때 반환되는 문서가 xml 형태이다. 덕분에 파싱도 해보고 파라미터 여러 개 바꿔가며 가지고 놀 수 있었는데, 대체 이 xml 형식의 문서가 뭐고 api가 이런 종류의 응답을 제공하는 게 일반적인지, 아니면 다른 형태의 리턴도 줄 수 있는지 알아보려고 한다. 회의 하다가 "xml 대신 json으로 드릴까요?" 라는 말이 나왔기 때문에.
XML
Xtensible Markup Language. 1998년 w3c에서 배포된 이래로 구조화된 데이터를 사람/기계 간 전달하기 위해 가장 빈번하게 사용되는 파일 포맷
- 순수 텍스트 문서로, 사람과 기계 모두 쉽게 이해할 수 있음
- 구조화된 문서이기 때문에 파싱이 용이하여 특히 기계 - 다른 소프트웨어 어플리케이션, 시스템, 플랫폼 - 간 호환성이 높음. 많은 웹 기반 어플리케이션이 정보를 저장하거나 다른 어플리케이션으로 정보를 전달할 때 xml 포맷의 문서를 활용한다.
- Unicode 지원하여 여러 언어 지원 가능
JSON
JavaScript Object Notation. 키-값attribute-value pair과 배열array을 기반으로 데이터를 저장 혹은 전송하기에 용이. JavaScript에서 유래한 포맷은 맞지만 대부분 프로그래밍 언어에서 처리를 지원하여 language-independent 데이터 포맷으로 분류함. 처음 개발된 건 2000년대 초반인데 2013년 첫 표준화가 됐다고 한다. 비교적 젊네!
XML vs JSON
그럼 대체 왜 우리 개발자는 json으로도 드릴 수 있다고 했을까?
JSON은 흔히 low-overhead alternative to XML 라고 한다. xml보다 유지보수든, 구축이든 비용이 적게 든다는 의미일 테지?
서버에서는 선택에 따라 xml과 json 형식의 포맷 모두 내려받을 수 있게 해줄 수 있고, 클라이언트는 RequestHeader에 application/xml, application/json 이라고 원하는 Media타입을 지정해주면 된다고 한다. (Springboot 기준)
JSON이 우세한 점
- 덜 장황함: xml은 tag의 오프닝과 클로징 (<rank> 1 </rank>) 이 필요.
- 더 작은 크기: 같은 정보를 담으면 json 파일의 크기가 유의미하게 작다고 함. 일단 위의 클로징 태그부터가...
- 주로 웹의 문제겠지만, javascript와 합이 좋음
- 파싱 편의성 및 성능이 xml 대비 좋음: JSON 문서를 ‘객체’나 ‘다중 배열’로 즉각 변환 가능
XML이 우세한 점
- 메타 데이터 지원: json은 속성에 불과하고, xml은 메타 데이터를 element 안에 attribute로 저장할 수 있음.
이렇게: <album albumnumber="6"> - 무결성 파악에 좋다(고 하는데 이건 아직 뭔소린지 잘 모르겠음)
참고: XML vs HTML
- html은 정보의 디스플레이에 초점을 맞추고, xml은 정보의 구조화된 저장에 더 집중한 포맷이다
- xml은 이 데이터가 '어떻게 표현되어야 하는지'에 대한 정보를 담고 있지 않음
- 이 때문에, html과 xml이 상보적인 관계라고 보는 게 맞겠다.
- html의 tag는 사전에 정의된 것에 한정된 반면, xml은 개발자가 DTD (Document Type Definition)에 필요한 태그custom tag를 직접 정의하여 사용할 수 있어서 확장성이 높다(extensible).
여담
오피스의 pptx, docx의 x는 xml 포맷을 지원한다는 뜻이라고.
참고/ 번역 원문
https://blog.hubspot.com/website/what-is-xml-file
https://www.w3schools.com/xml/xml_usedfor.asp
https://en.wikipedia.org/wiki/JSON
https://restfulapi.net/json-vs-xml/
https://www.coovil.net/xml-vs-json/
https://www.quackit.com/json/tutorial/json_vs_xml.cfm
'Data' 카테고리의 다른 글
Apache Kafka 카프카 (1) | 2022.05.01 |
---|---|
OLAP과 OLTP (0) | 2022.02.09 |
Apache Hadoop 하둡 (1) | 2022.01.31 |