์•„์ธ๋ 
Hello, Ain!
์•„์ธ๋ 
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (23)
    • ์‚ฌ๋‹ด๐ŸŒน (1)
    • Basic (7)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (4)
    • Front (1)
      • React (1)
    • Back (9)
      • Java (5)
      • DATABASE (3)
      • JSP (1)
      • Python (0)
    • ETC (5)
      • Unity(C#) (2)

์ธ๊ธฐ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
์•„์ธ๋ 
Back/Java

RESTApi / XML๋กœ ๋ฐ์ดํ„ฐ ์‘๋‹ตํ•˜๊ธฐ

Back/Java

RESTApi / XML๋กœ ๋ฐ์ดํ„ฐ ์‘๋‹ตํ•˜๊ธฐ

2021. 9. 17. 13:32

๐Ÿ‘€ ๊ตฌ๊ตฌ์ ˆ์ ˆ ์„œ๋ก 

 

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
    'Back/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Spring] ํŒŒ์ผ์—…๋กœ๋“œ, ํŒŒ์ผ๋‹ค์šด๋กœ๋“œ (1)
    • JDBC ๊ธฐ์ดˆ
    • ์„œ๋ธ”๋ฆฟ ๊ธฐ์ดˆ (Servlet)
    • ํด๋ž˜์Šค์˜ ๊ฐœ๋… (Java)
    ์•„์ธ๋ 
    ์•„์ธ๋ 
    https://github.com/aine-jeong

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

    ๋‹จ์ถ•ํ‚ค

    ๋‚ด ๋ธ”๋กœ๊ทธ

    ๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
    Q
    Q
    ์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
    W
    W

    ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

    ๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
    E
    E
    ๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
    C
    C

    ๋ชจ๋“  ์˜์—ญ

    ์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
    S
    S
    ๋งจ ์œ„๋กœ ์ด๋™
    T
    T
    ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
    H
    H
    ๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
    Shift + /
    โ‡ง + /

    * ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.