有人可以解释Ajax和休息之间的区别吗?

时间:2014-04-14 07:51:35

标签: javascript ajax rest symfony

的Ajax

  

异步Javascript和XML“.Ajax松散地定义了一组   有助于使Web应用程序呈现更丰富用户的技术   经验。完成数据更新和刷新屏幕   异步使用javascript和xml(或json或只是普通的http   交)

恢复

  

“代表性国家转移”。使用REST原则的应用程序   有一个Url结构和一个旋转的请求/响应模式   围绕资源的使用。在纯模型中,HTTP Verbs Get,   Post,Put和Delete用于检索,创建,更新和删除   资源分别。放置和删除通常不使用,留下Get   和发布到地图以选择(GET)和创建,更新和删除(POST)

我真的对这些术语感到困惑,我用Symfony2编写网站并且一切都能正常工作,但是一旦我的老板问我是怎么做的,我真的不知道用它来解释它的话。它可能会因为我把这一切都作为一种爱好开始,并将我的生命都集中在实用的部分上。

假设我在客户端(javascript)上有这段代码:

   function image_remover(myimageId,path)
    {   
        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 Controller with annotation)

    /**
    *@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吗?

1 个答案:

答案 0 :(得分:10)

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

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

REST是HTTP请求交换的概念,因此您可以针对在服务器端实现的REST-API进行RESTful请求调用(例如,获取' get')。

请参阅:Is AJAX a Rest api

您可能希望在维基百科和其他易于访问的信息源上阅读有关REST和AJAX的内容。