๐ ๊ตฌ๊ตฌ์ ์ ์๋ก
RestApi๋ฅผ ์ด์ฉํ์ฌ API๋ฅผ ๋ง๋๋ ์ ๋ฌด ๋์ค xml๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐํํด์ผ ํ ์ผ์ด ์๊ฒผ๋ค.
xml๋ฐฉ์์ ๋ง๋ค์ด๋ณด๊ธฐ๋ ์ปค๋ ์ฌ์ฉํด๋ณธ ์ ๋ ์์๊ธฐ ๋๋ฌธ์ ์์ค๋ฅผ ๋ถ์ํ๊ณ ์๋ฃ๋ฅผ ์ฐพ๋๋ฐ์๋ง ๊ฑฐ์ ํ๋ฃจ๋ฅผ ์์ ๊ฒ ๊ฐ๋ค.
xml๋ง ์๋ตํ๋ ๊ฒ์ด ์๋๋ผ, ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด formatํ์์ ๋ฐ์ xml ๋๋ json์ผ๋ก ๋๋ ์ ๋ฐํํด์ค์ผ ํ๊ณ ,
๋๊ฐ์ง ๋ฐฉ์์ผ๋ก ์งํํ๋๋ฐ,
1. ์ค์ ์ ํตํด์ ์ปจํธ๋กค๋ฌ์์ ์ง์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ง ์๊ณ ๋ ๋ชจ๋ api ํธ์ถ ํ์์ format์ ๋๋ ์ ๋ฐ์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ๊ฒ
2. ์ปจํธ๋กค๋ฌ์์ ์ง์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ xml๊ณผ json์ ๋๋ ์ ๊ฐ๊ฐ ์๋ตํด์ฃผ๋ ๊ฒ
์ฒซ๋ฒ์งธ ๋ฐฉ์์ ์ค์ ์ธ์์ด์๊ธฐ ๋๋ฌธ์ ์ดํดํด์ ์ฌ์ฉํ๋ค๊ธฐ ๋ณด๋ค๋ ๊ฒ์๊ณผ ๊ธฐ์กด ์์ค๋ฅผ ํตํด์ ๋ง์ ๋์์ ๋ฐ์๊ณ , ์ค์ ํ๋ฒ๋ง ํด๋๋ฉด ์ดํ ๋ฐ๋ก ์ค์ ํด์ฃผ์ง ์์๋ ๋๋ค๋ ๋ถ๋ถ์ด ์ข์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฒซ๋ฒ์งธ ๋ฐฉ์์ ์ฑ๊ณต์ํจ ๋ค ๋๋ฒ์งธ ๋ฐฉ์์ ๊ตณ์ด ํ ํ์๊ฐ ์์๊ฒ ์ง๋ง .......^^.....
์ฐ๋ฆฌ์๊ฒ๋ ๋ ๊ณ ๊ฐ๋์ด ์์ผ๋๊น! ใ ใ ใ
๊ธฐ์กด ๋ฐฉ์๊ณผ ๋์ผํ๊ฒ ์๋น์คํด์ผํ๊ธฐ ๋๋ฌธ์,
์์ค๋ฅผ ํ๋ฆฐํธํด์ ์ฝ์ด๊ฐ๋ฉด์ ์ดํดํ๊ณ ์ดํด ์๋๋๊ฑด ๋ ๊ฒ์, ๋ฌธ์์ฝ๊ธฐ... ๋ฌดํ๋ฐ๋ณต
(์ธ์ ๊ฐ ๋ชจ๋ํฐ๋ก ์์ค๋ง ํ์ด๋ ์ ์ฒด์ ์ธ ํฐ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ง๋ ๋จธ์จ์ด ๊ฐ๋ฐ์๊ฐ ๋ผ์ผ์ง ...!!!)
xml๊ณผ json์ ๋ํ ์ดํด ๋ฟ๋ง ์๋๋ผ ์๋ฐ ๊ณต์๋ฌธ์๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ์ฒด๋ ๋ฉ์๋๋ค์ ๋ํด์ ๋ง์ด ์๊ฒ๋์๋ค.
์๋ฌดํผ,
์ด๋ฒ ํฌ์คํ ์์๋ ์ผ๋จ ๋ฌธ์๋ฅผ ์ง์ ์์ฑํ์ฌ DOM๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ณ ๋ด์ฉ์ ์์ฑํ์ฌ HttpServletResponse๋ฅผ ํตํด XML์ ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๊ธฐ๋กํด๋๊ณ ์ ํ๋ค.
+ ๋ค์์ผ๋ก๋ JSONObject ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ JSON์ ์ง์ ์๋ตํ๋ ๋ฐฉ์๋ ์ ์ด๋ฌ์ผ๊ฒ ๋ค..
0. ์ฌ์ ์ค์
(1) @RestController๋ฅผ ์ฌ์ฉํ ์ปจํธ๋กค๋ฌ
(2) @RequestMapping์ ์ด์ฉํ์ฌ GET๋ฐฉ์์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๊ฒ์์ ์ ์ธํด๋
(3) return type์ void
(4) ํ๋ผ๋ฏธํฐ์ HttpServletResponse๋ฅผ ์ด์ฉํ์ฌ ์๋ตํ ๊ฐ์ฒด ์์ฑํด๋
1. ์์!
(1) XML๋ฌธ์๋ฅผ ํ์ฑํ๊ธฐ ์ํด DocumentBuilderFactory์ DocumentBuilder ์ ์ธ, ์ธ์คํด์ค ์์ฑ
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
- XML๋ฌธ์์์ DOM๊ฐ์ฒดํธ๋ฆฌ๋ฅผ ์์ฑํ๋ ํ์๋ฅผ ์์ฑํ๋ ๊ฒ
(2) Document ์์ฑ ํ, ๋ ๋ฆฝ์คํํ์ธ์ง์ ์ฌ๋ถ๋ฅผ true๋ก ๋ณ๊ฒฝ
Document document = documentBuilder.newDocument();
document.setXmlStandalone(true);
(3) root Element ์์ฑํด์ document์ ์์์์๋ก ์ถ๊ฐํด์ฃผ๊ธฐ
/** root ์์ฑ **/
Element root = document.createElement("root");
/** ์์์์ ์ถ๊ฐ **/
document.appendChild(root);
(4) XML๋ฌธ์์ด๋ก ๋ณํํ๊ธฐ ์ํ ์ค๋น
ByteArrayOutputStream out = new ByteArrayOutputStream();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(out);
- ByteArrayOutputStream : ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํธ๋ฐฐ์ด์ ๊ธฐ๋ก๋๋ ์ถ๋ ฅ ์คํธ๋ฆผ ๊ตฌํ
(5) ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ค๋น!
(6) ์ํ๋ DOM ๊ตฌ์กฐ๋ก ์์ฑํด์ฃผ๊ธฐ
- xml์ ๊ตฌ์กฐ๊ฐ ์์ํ๊ธฐ ๋๋ฌธ์ ์ดํด๊ฐ ์ด๋ ค์ ๋ ๊ฒ ๊ฐ๋ค.
- ์์ root๋ฅผ ์์ฑํด์ document์ append์์ผ ์ค๋นํด๋์๋ ๊ฒ ์ฒ๋ผ, root ์๋๋ก ์ํ๋ Element๋ค์ ์์ฑํ์ฌ append์์ผ์ฃผ๋ฉด ๋๋ค.
์๋ฅผ๋ค์ด,
<?xml version="1.0" encoding="UTF-8"?>
<root>
<resultCount>1</resultCount>
<item>
<name>ํ๊ธธ๋</name>
<age>20</age>
</item>
</root>
์๊ณผ ๊ฐ์ ๊ตฌ์กฐ์ xml ๋ฌธ์๋ฅผ ์๋ตํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ์์ฑ๋๋ค.
//1. ๋ฐ์ดํฐ ์ค๋น
int resultCnt = 1;
String name_data = "ํ๊ธธ๋";
int age_data = "20";
//2. Element ์์ฑ
Element resultCount = document.createElement("resultCount");
Element item = document.createElement("item");
Element name = document.createElement("name");
Element age = document.createElement("age");
//3. Element์ Data ์ธํ
resultCount.setTextContent(Integer.toString(resultCnt));
name.setTextContent(name_data);
age.setTextContent(Integer.toString(age_data));
//4. append
root.appendChild(resultCount);
root.appendChild(item);
item.appendChild(name);
item.appendChild(age);
(7) ์ถ๋ ฅํด์ฃผ๊ธฐ ์ํ ์ธ์คํด์ค ์์ฑ
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
(8) ์ํ๋ ์ค์ ์ธํ ํ, ์ถ๋ ฅ
//์ถ๋ ฅ์ ๋ฌธ์ ์ฝ๋: UTF-8
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
//๋ค์ฌ์ฐ๊ธฐ ์์
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//์ถ๋ ฅ
transformer.transform(source, result);
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
response.getWriter().println(new String(out.toByteArray(), StandardCharsets.UTF_8));
์ผ๋จ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋๋ฐ.....
์ฌ์ค ์ง๊ธ ๋ฐฉ๋ฒ์ ์๊ฒ ์ง๋ง ์ค์ ์ด๋ ๊ตฌ์กฐ๋ ์ ๋ชจ๋ฅด๊ฒ ๋๋ฐ๋ค๊ฐ, ์ด๊ฒ ๋๋ฌด ๋นํจ์จ์ ์ธ๊ฑด ์๋์ง ๊ณ ๋ฏผ์ค ใ ใ
์ฐ์ ๋๋จธ์ง ์์ธ๋ ์ก์ผ๋ฌ ๊ฐ์ผ๊ฒ ๋ค ๐ฅ๐ฅ
'Back > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ํ์ผ์ ๋ก๋, ํ์ผ๋ค์ด๋ก๋ (1) (0) | 2022.03.25 |
---|---|
JDBC ๊ธฐ์ด (0) | 2021.07.21 |
์๋ธ๋ฆฟ ๊ธฐ์ด (Servlet) (0) | 2021.07.20 |
ํด๋์ค์ ๊ฐ๋ (Java) (0) | 2021.07.17 |