有人能解释Ajax和rest之间的区别吗

Can someone explain the difference between Ajax and rest?

本文关键字:之间 区别 rest 能解释 Ajax      更新时间:2023-09-26
AJAX

异步Javascript和XML";。Ajax松散地定义了一组
帮助web应用程序呈现更丰富用户的技术
经验完成了屏幕的数据更新和刷新
异步使用javascript和xml(或json或只是普通的httpPOST(

休息

"代表性国家转移";。使用REST原则的应用程序具有Url结构和循环的请求/响应模式围绕资源的使用。在纯模型HTTP谓词Get中,Post、Put和Delete用于检索、创建、更新和删除资源。Put和Delete通常不使用,剩下Get和Post to map以选择(GET(并创建、更新和删除(Post(

我对这些术语真的很困惑,我用Symfony2编写网站代码,一切都很正常,但当我的老板问我是怎么做到的时,我真的不知道该用什么词来解释。这可能是因为我一开始只是一种爱好,一生都专注于实用部分。

假设我在客户端有以下代码(javascript(:

       function image_remover(myimageId,path)
        {   
            // creating xmlhttprequest using ajax
            var xml = ( window.XMLHttpRequest ) ?
                   new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    
            xml.open("GET", path+"?imageId="+myimageId, true);  
            xml.setRequestHeader("Content-type", "application/json"); 
    
            xml.onreadystatechange = function() 
            {
                if( xml.readyState === 4 &&
                    xml.status     === 200 )
                {
                    var serverResponse = JSON.parse(xml.responseText); 
                     switch(serverResponse.d)
                     {
                       // do stuff
                     }
                }
            } 
            xml.send(null);   
        }

在服务器端(带有注释的PHP/Symfony2控制器(

        /**
        *@Route("/removeImage",name="image_remover")
        */
        public function removeImageAction(Request $request)
        {
            //If user is not logged in..
            if (false === $this->get('security.context')->isGranted('ROLE_USER')) 
            {          
                //ip block 
                return new Response("an error has occured");
            }
    
             
            //My requests
            $current_imageId = intval($request->query->get('imageId')); 
            
            //Getting image repository
            $em = $this->getDoctrine()->getManager();
            $db_myimage = $em->getRepository('GabrielUploadBundle:Image')->findOneById($current_imageId); 
            
            //if image was found
            if($db_myimage)
            {
                //Owner of this image 
                $imageowner = $db_myimage->getImageowner();
    
                //Getting user name
                $user = $this->getUser();
                $current_username = $user->getUsername();    
    
                // is username == imageowner? if not = block ip
                if($current_username == $imageowner) 
                {
                    //remove image from database
                    $em->remove($db_myimage);
                    $em->flush();
    
                    // d = deleted y = yes
                    $response = array("d"=>1);    
                    return new Response(json_encode($response));
                }
                else
                {
                    //ip block
                    $response = array("d"=>0);
                    return new Response(json_encode($response));
                } 
            }
            else
            {
                //image object not found
                //d = deleted, n = not found
                $response = array("d"=>0);
                return new Response(json_encode($response));
            }
        }
    }  

我在这段代码的哪一部分使用了REST?AJAX是什么部分?我甚至用过REST吗?

我不会详细评论您的代码,但:

AJAX基本上是指在JavaScript中进行异步请求,传统上发送/接收XML(尽管现在经常使用JSON而不是XML(。这就是您在客户端使用的技术。

REST是一个用于HTTP请求交换的概念,因此您正在对服务器端实现的REST-API进行RESTful请求调用(例如"get"(。

请参阅:AJAX是Rest-api 吗

你可能想在维基百科和其他易于访问的信息源上读一点关于REST和AJAX的知识。