Google
[1536]
 
 
 
 
 
 
 
 
 
 
 
 
¾×¼Ç½ºÅ©¸³Æ®  
 
 
 
 
 
 
 
 
 
 
 

º»ÀÎÀÌ »ý°¢ÇÏ´Â À¥¼­ºñ½º´Â À̱âÁ¾°£ÀÇ Åë½ÅÀ» À§ÇÑ ¸öºÎ¸²? À̶ó°í »ý°¢ÇÑ´Ù.  À¥¼­ºñ½º´Â ajax ¿Í ¸¶Âù°¡Áö·Î ÇöÀç ÁøÇàÇüÀÌ´Ù. ÀÌ¹Ì µµÀÔÇÏ¿© ÀÌ¿ëÇϰí ÀÖ´Â °÷µµ ÀÖ°í °è¼ÓÇØ¼­ ¹öÁ¯À» ¿Ã¸®¸ç Ä®³¯À» ¼¼¿ì°í ÀÖ´Â °÷µµ ÀÖ´Ù.

 

À¥¼­ºñ½º´Â ¾î¶² ¾ð¾î·Î ±¸Çö‰ç´ÂÁö¿¡ »ó°ü¾øÀÌ ±× ¼­ºñ½º¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ±¸ÇöÇØ¾ß ÇÏ´Â ±â¼ú·Î½á, ÀÌ·± Åë½ÅÀÌ °¡´ÉÅä·Ï Çϱâ À§ÇÑ °¡Àå ±âº»ÀûÀÎ Ãʼ®Àº HTTP Åë½Å ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇϰí ÀÖ´Ù´Â °Í°ú À̱âÁ¾°£ÀÇ µ¥ÀÌÅÍ Æ÷¸ËÀ» °í·ÁÇÏ¿© ÅØ½ºÆ® ±â¹ÝÀÇ XML À» »ç¿ëÇÑ´Ù´Â °ÍÀÌ´Ù.

 

Ajax ¸¦ ÀÌ¿ëÇØ¼­ SOAP ÇÁ·ÎÅäÄÝÀ» ±â¹ÝÀ¸·Î ÀÛ¼ºµÈ À¥¼­ºñ½º¿¡ Á¢±ÙÇÒ ¼ö ÀÖÀ»±î? °¡´ÉÇÏÁö¸¸ »ç½Ç ¾î·Æ´Ù. SOAP ÇÁ·ÎÅäÄÝÀº ½ÇÁ¦ XML °´Ã¼¸¦ ÆÄ¶ó¹ÌÅÍ·Î »ç¿ëÇϰí Àֱ⠶§¹®¿¡ Áö±Ý±îÁö ¿ì¸®°¡ ÇØ¿Â ¹æ½ÄÀÎ ½ºÆ®¸µ Á¶ÇÕ°¡Áö°í´Â »ó´çÈ÷ Èûµé´Ù. ¿Ö³ÄÇÏ¸é ½ºÆ®¸µÀ» Á¶ÇÕÇÏ´Â °úÁ¤¿¡¼­ ¿¡·¯°¡ ³¯ ¼öÀÖ´Â È®·üÀÌ ¸Å¿ì ³ô±â ¶§¹®¿¡ ÁÁÀº ¹æ¹ýÀº ¾Æ´Ò °ÍÀÌ´Ù. ¶ÇÇÑ SOAP Àº GET ¹æ½ÄÀÌ ¾Æ´Ñ POST ¹æ½ÄÀ» ÁÖ·Î »ç¿ëÇØ¾ß ÇÑ´Ù. µû¶ó¼­ Á» ´õ ½¬¿î ¹æ¹ýÀ¸·Î SOAP request À» À§ÇÑ Á¤Àû XML ÅÛÇø´À» XMLHttpRequest  °¡ ·ÎµåÇÑ ÈÄ¿¡ DOM ¼Ó¼º°ú ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© XML µ¥ÀÌÅ͸¦ Á¶ÀÛÇÏ´Â °ÍÀÌ ÈξÀ ¼ö¿ùÇÒ °ÍÀÌ´Ù.

 

 SOAP À» ÀÌ¿ëÇÏ´Â °Í ¸»°í Á» ´õ ½¬¿î ¹æ¹ýÀÌ Á¸ÀçÇÑ´Ù. Representational State Transfer(REST) Àº À¥¼­ºñ½º¸¦ ¾ÆÁÖ ½±°Ô ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ¼­ºñ½º ÀÌ´Ù. REST ´Â SOAP °ú ºñ±³ÇÏÀÚ¸é 20%ÀÇ ³ë·ÂÀ¸·Î SOAP ÀÇ 80% ¿¡ ÇØ´çÇÏ´Â À̵æÀ» ÃëÇÒ ¼ö ÀÖ´Ù°í ÇÑ´Ù. Ajax ´Â REST ±â¹Ý À¥¼­ºñ½º¿¡ ¾ÆÁÖ ÀûÇÕÇÏ´Ù. XHR °´Ã¼¸¦ ÀÌ¿ëÇØ¼­ REST À¥¼­ºñ½º¿¡ ºñµ¿±â·Î Á¢±ÙÇÏ°í ±× °á°ú´Â XML ·Î ¹Þ¾Æ¼­ ºê¶ó¿ìÀú¿¡¼­ ÆÄ½ÌÇÏ¿© »ç¿ëÇÏ¸é ³¡ÀÌ´Ù. ¾î¶²°¡? ¿ì¸®°¡ Áö±Ý±îÁö ÇØ¿À´ø ¹æ½Ä°ú ¾ÆÁÖ Èí»çÇÏÁö ¾ÊÀº°¡?

 

¿©±â¼­ ÇѰ¡Áö ´õ ¤°í °¡¾ß ÇÒ °ÍÀº XHR °´Ã¼ÀÇ º¸¾È ¹®Á¦ÀÌ´Ù. ÀÌ ¹®Á¦´Â AJAX °­ÀÇ 2Àå - XMLHttpRequest ¿ÀºêÁ§Æ® »ç¿ëÇϱ⿡¼­ ¾ð±ÞÇÏ¿´´Ù. XHR °´Ã¼°¡ À¥¼­ºñ½º¸¦ »ç¿ëÇÑ´Ù´Â °ÍÀº ÀڱⰡ ¼ÓÇØ ÀÖ´Â µµ¸ÞÀÎ ¹Û¿¡ ÀÖ´Â ¼­¹öÀÇ ¸®¼Ò½º url ¿¡ Á¢±ÙÇÑ´Ù´Â ÀǹÌÀ̹ǷΠº¸¾È ¹®Á¦´Â ¹Ýµå½Ã ¹ß»ýÇÏ°Ô µÇ¾î ÀÖ´Ù. µû¶ó¼­ ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­´Â °ÔÀÌÆ®¿þÀÌ ±â´ÉÀ» ÇÏ´Â ÇÁ·Î±×·¥À» Ãß°¡·Î °³¹ßÇØ¾ß ÇÑ´Ù. Ç¥ÇöÀÌ °ÔÀÌÆ®¿þÀ̶ó ±×·²µíÇØ º¸ÀÌÁö¸¸ ÄÚµùÀº ±²ÀåÈ÷ °£´ÜÇÏ´Ù. °ÔÀÌÆ®¿þÀÌ ±â´ÉÀº ³×Æ®¿÷ ÇÁ·Î±×·¥À¸·Î ¼­¹öÂÊ ÇÁ·Î±×·¥¿¡¼­ ±¸ÇöÇÒ °ÍÀÌ´Ù.

 

À̹øÀåÀÇ »ùÇà ÇÁ·Î±×·¥Àº ¾ßÈÄ¿¡ ±¸ÇöµÇ¾î Àִ REST À¥¼­ºñ½º¿¡ Á¢±ÙÇÏ¿© ±× °á°ú¸¦ º¸¿©ÁÖ´Â ÇÁ·Î±×·¥ÀÌ´Ù.

 

[»ùÇñ¸Çöº¸±â]

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Yahoo! Search Web Services</title>

<script type="text/javascript">
var xmlHttp;

function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}

function doSearch() {
var url = "example15.php?" + createQueryString() + "&ts=" + new Date().getTime();
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}

function createQueryString() {
var searchString = document.getElementById("searchString").value;
searchString = escape(searchString);

var maxResultsCount = document.getElementById("maxResultCount").value;

var queryString = "query=" + searchString + "&results=" + maxResultsCount;
return queryString;
}

function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
//alert('handleStateChange');
parseSearchResults();
}
else {
alert("Error accessing Yahoo! search");
}
}
}

function parseSearchResults() {
var resultsDiv = document.getElementById("results");
//alert(resultsDiv.childNodes.length);
while(resultsDiv.childNodes.length > 0) {
resultsDiv.removeChild(resultsDiv.childNodes[0]);
}

var allResults = xmlHttp.responseXML.getElementsByTagName("Result");
var result = null;
for(var i = 0; i < allResults.length; i++) {
result = allResults[i];
parseResult(result);
}
}

function parseResult(result) {
var resultDiv = document.createElement("div");

var title = document.createElement("h3");
title.appendChild(document.createTextNode(getChildElementText(result, "Title")));
resultDiv.appendChild(title);

var summary = document.createTextNode(getChildElementText(result, "Summary"));
resultDiv.appendChild(summary);

resultDiv.appendChild(document.createElement("br"));
var clickHere = document.createElement("a");
clickHere.setAttribute("href", getChildElementText(result, "ClickUrl"));
clickHere.appendChild(document.createTextNode(getChildElementText(result, "Url")));
resultDiv.appendChild(clickHere);

document.getElementById("results").appendChild(resultDiv);
}

function getChildElementText(parentNode, childTagName) {
var childTag = parentNode.getElementsByTagName(childTagName);
return childTag[0].firstChild.nodeValue;
}
</script>
</head>

<body>
<h1>Web Search Using Yahoo! Search Web Services</h1>

<form action="#">
Search String: <input type="text" id="searchString"/>

<br/><br/>
Max Number of Results:
<select id="maxResultCount">
<option value="1">1</option>
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
</select>

<br/><br/>
<input type="button" value="Submit" onClick="doSearch();"/>
</form>

<h2>Results:</h2>
<div id="results"/>

</body>
</html>


<example15.html ÀÇ Àüü ¼Ò½º ÄÚµå>

 

<?
class getUrlClass{

function getUrlClass(){

}


function getTargetUrl(){
$url = $this->url."&query=$this->query&results=$this->results";
$fd = fopen ($url, "r");
while (!feof ($fd)) {
$this->buffer .= fgets($fd, 4096);
}
fclose ($fd);
header("Content-type: text/xml");
echo $this->buffer;

}
}

$myurl = new getUrlClass();
$myurl->query=$query;
$myurl->results=$results;
$myurl->url = "http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=thunderboltsoftware&type=all";
$myurl->getTargetUrl();
?>

 

<example15.php ÀÇ Àüü ¼Ò½º ÄÚµå>

 

[»ùÇñ¸Çöº¸±â]