web-dev-qa-db-ja.com

誰かがAjaxと残りの違いを説明できますか?

アヤックス

非同期JavascriptとXML」。Ajaxは、Webアプリケーションがより豊かなユーザーエクスペリエンスを提供できるようにする一連のテクノロジーを大まかに定義しています。画面のデータ更新と更新は、javascriptとxml(またはjsonまたは通常のhttpポスト)を使用して非同期で行われます。

残り

「代表的な州の移転」。 RESTの原則を使用するアプリケーションには、リソースの使用を中心としたUrl構造と要求/応答パターンがあります。純粋なモデルでは、HTTP動詞のGet、Post、Put、Deleteを使用して、リソースを作成、更新、削除します。PutとDeleteは多くの場合使用されず、GetとPostは選択(GET)と作成、更新、削除(POST)にマップされます。

私はこれらの用語について本当に混乱しています、私はSymfony2でWebサイトをコーディングし、すべてが常に機能しますが、上司が私にそれをどうやってやったのか尋ねたとき、私はそれを説明するために使う言葉が本当にわかりません。これらすべてを趣味として始め、実用的な部分に集中して私の人生を過ごしました。

クライアント側にこのコードがあるとしましょう(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 annotations)

    /**
    *@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を使用しましたか?

18
user254883

私はあなたのコードについて詳細にはコメントしませんが、

AJAXは基本的にJavaScriptで非同期リクエストを作成することを指し、従来はXMLを送受信します(現在、XMLの代わりにJSONがよく使用されます)。これがクライアント側で使用する手法です。

RESTはHTTPリクエスト交換の概念であるため、サーバー側で実装したREST-APIに対してRESTfulリクエストコール(「get」など)を行っています。

参照: Is AJAX a Rest api

また、RESTとAJAX Wikipediaやその他のアクセスしやすい情報源について)について少しお読みになることをお勧めします。

12