{"id":1700,"date":"2022-10-11T19:33:20","date_gmt":"2022-10-11T19:33:20","guid":{"rendered":"http:\/\/nikolapacekvetnic.rs\/?p=1700"},"modified":"2022-11-21T08:55:35","modified_gmt":"2022-11-21T08:55:35","slug":"consuming-a-rest-api-with-abap","status":"publish","type":"post","link":"http:\/\/nikolapacekvetnic.rs\/?p=1700","title":{"rendered":"Consuming a REST API with ABAP"},"content":{"rendered":"\n<p>A RESTful (or REST for short) API is an architectural style for an application program interface (API) that uses HTTP requests to access and use data. That data can be used to GET, PUT, POST and DELETE data types, which refers to the reading, updating, creating and deleting of operations concerning resources <a href=\"https:\/\/www.techtarget.com\/searchapparchitecture\/definition\/RESTful-API\">(Gillis)<\/a>. To consume a REST API simply means to&nbsp;<span style=\"font-size: inherit;\">use any part of it from an application.<\/span><\/p>\n<p>The simplest form of an HTTP request is certainly GET without parameters which is usually used to retrieve all entries offered via particular endpoint. In the following tutorial I will be looking at creating an ABAP program which consumes a REST API and displays all the entries retrieved as a HTML page.<\/p>\n\n\n\n<h2>Getting Started<\/h2>\n<p>Most of the coding will be done in Eclipse with ADT, but the entire process is as easy to follow when one is using SAP GUI tools as well. Select <span style=\"color: #ffffff;\">File \/ New \/ Other<\/span>, and then type in &#8220;<span style=\"color: #ffffff;\"><em>program<\/em><\/span>&#8221; to filter out the results; select <span style=\"color: #ffffff;\">ABAP Program<\/span> to create one. The result can be seen on Screenshot 1.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_00-1024x486.png\" alt=\"\" class=\"wp-image-1701\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_00-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_00-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_00-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_00-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_00-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_00-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 1 &#8211; A new ABAP program.<\/figcaption><\/figure>\n\n\n\n<p>Define a selection screen with a single parameter of type <span style=\"color: #ffffff;\">string&nbsp;<\/span>(Screenshot 2).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_01-1024x486.png\" alt=\"\" class=\"wp-image-1702\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_01-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_01-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_01-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_01-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_01-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_01-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 2 &#8211; Defining a selection screen.<\/figcaption><\/figure>\n\n\n\n<p>In order to get the selection screen frame caption and the parameter label <span style=\"color: #ffffff;\">open the program with SAP GUI&nbsp;<\/span>(Screenshot 3).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_02-1-1024x486.png\" alt=\"\" class=\"wp-image-1705\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_02-1-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_02-1-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_02-1-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_02-1-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_02-1-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_02-1-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 3 &#8211; Opening the program with SAP GUI.<\/figcaption><\/figure>\n\n\n\n<p>Head over straight to the <span style=\"color: #ffffff;\">Text Elements<\/span> page (Screenshot 4).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_03-1024x486.png\" alt=\"\" class=\"wp-image-1706\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_03-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_03-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_03-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_03-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_03-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_03-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 4 &#8211; Program opened with SAP GUI.<\/figcaption><\/figure>\n\n\n\n<p>Add the entry <span style=\"color: #ffffff;\">001<\/span> into the Text Symbols table with value &#8220;<span style=\"color: #ffffff;\">User Input<\/span>&#8221; (can be anything really). The filled out table can be seen on Screenshot 5.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_04-1024x486.png\" alt=\"\" class=\"wp-image-1707\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_04-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_04-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_04-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_04-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_04-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_04-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 5 &#8211; Text Symbols table.<\/figcaption><\/figure>\n\n\n\n<p>Now, head over to the <span style=\"color: #ffffff;\">Selection Texts<\/span> tab and change the value of <span style=\"color: #ffffff;\">P_URL<\/span> entry to &#8220;<span style=\"color: #ffffff;\">Rest API URL<\/span>&#8221; (again, it can be anything). Check Screenshot 6 for comparison.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_05-1024x486.png\" alt=\"\" class=\"wp-image-1708\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_05-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_05-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_05-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_05-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_05-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_05-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 6 &#8211; Selection Texts table.<\/figcaption><\/figure>\n\n\n\n<p>This concludes the initial setup, thus letting us move on to consuming the REST API itself.<\/p>\n\n\n\n<h2>Consuming the REST API<\/h2>\n<p>The basic idea, which is by no means exclusive to ABAP, comes down to following five steps:<\/p>\n<ol>\n<li>Create an HTTP Client Object<\/li>\n<li>Make a Request<\/li>\n<li>Ask for a Response<\/li>\n<li>Get the Data<\/li>\n<li>Display the Data<\/li>\n<\/ol>\n\n\n\n<h3>Create an HTTP Client Object<\/h3>\n<p>To create an HTTP client object in ABAP one should make use of <span style=\"color: #ffffff;\">cl_http_client<\/span> class and its static method <span style=\"color: #ffffff;\">create_by_url<\/span> (there are other options as well but this one suits us best in this case).<\/p>\n<p>In order to make use of Eclipse&#8217;s advanced assistance features, start typing the name of the class and then hit <span style=\"color: #ffffff;\">CTRL+Space<\/span> &#8211; an auto-complete list should pop up letting you choose one of the options available based on what you typed down already. Not only does this work with methods as well, but there is an additional feature of using <span style=\"color: #ffffff;\">SHIFT+Enter<\/span> to select the method, which then types out the entire signature, i.e. reveals all the IMPORTING, EXPORTING, EXCEPTIONS and other types of parameters that the method works with (Screenshot 7).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_06-1024x486.png\" alt=\"\" class=\"wp-image-1709\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_06-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_06-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_06-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_06-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_06-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_06-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 7 &#8211; Creating an HTTP Client Object.<\/figcaption><\/figure>\n\n\n\n<p>The method <span style=\"color: #ffffff;\">create_by_url<\/span> takes in the URL of the REST API we wish to consume (fed in via parameter on the selection screen in this case) and returns the HTTP client object it creates (<span style=\"color: #ffffff;\">lo_http<\/span> in our case). The exceptions stated in the signature can then be evaluated and properly handled, however that is out of the scope of this tutorial.<\/p>\n\n\n\n<h3>Make a Request<\/h3>\n<p>The <span style=\"color: #ffffff;\">IF sy-subrc = 0.<\/span> check ensures that the program is terminated in case any errors occur.&nbsp;<\/p>\n<p>If, on the other hand, all went well we now have our HTTP client and we are in position to make a request. For this we utilise the <span style=\"color: #ffffff;\">send<\/span> method (again, <span style=\"color: #ffffff;\">CTRL+Space<\/span> and <span style=\"color: #ffffff;\">SHIFT+Enter<\/span> make our lives easier in Eclipse) which only cares about a <span style=\"color: #ffffff;\">timeout<\/span> value, which is here set to <span style=\"color: #ffffff;\">15<\/span> but can be any other value that works as well. The result can be seen on Screenshot 8.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_07-1024x486.png\" alt=\"\" class=\"wp-image-1710\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_07-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_07-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_07-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_07-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_07-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_07-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 8 &#8211; Making a Request.<\/figcaption><\/figure>\n\n\n\n<h3>Ask for a Response<\/h3>\n<p>Now that the request has been made, we should ask for a response &#8211; this is achieved through method <span style=\"color: #ffffff;\">receive<\/span> which takes no input and returns no output values (Screenshot 9).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_08-1024x486.png\" alt=\"\" class=\"wp-image-1711\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_08-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_08-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_08-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_08-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_08-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_08-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 9 &#8211; Asking for a Response.<\/figcaption><\/figure>\n\n\n\n<h3>Get the Data<\/h3>\n<p>Data is accessed via <span style=\"color: #ffffff;\">response<\/span>, which is a field of the <span style=\"color: #ffffff;\">lo_http<\/span> object. The <span style=\"color: #ffffff;\">get_cdata<\/span> method used is the way of getting the data in character format, i.e. as a string. Since what we will be receiving from the API is a JSON object, this is exactly what we want (Screenshot 10).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_09-1024x486.png\" alt=\"\" class=\"wp-image-1712\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_09-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_09-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_09-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_09-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_09-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_09-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 10 &#8211; Getting the Data.<\/figcaption><\/figure>\n\n\n\n<h3><span style=\"color: #ffffff;\">Display the Data<\/span><\/h3>\n<p>The data is displayed using the <span style=\"color: #ffffff;\">cl_abap_browser<\/span>&nbsp;class and its method <span style=\"color: #ffffff;\">show_html<\/span>. The method signature once fully displayed in Eclipse is pretty self-explanatory, however of its myriad of input parameters we will only be using two. This gives us perhaps not the fanciest, but certainly quite serviceable display of the JSON objects retrieved (Screenshot 11).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_10-1024x486.png\" alt=\"\" class=\"wp-image-1713\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_10-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_10-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_10-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_10-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_10-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_10-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 11 &#8211; Displaying the Data.<\/figcaption><\/figure>\n\n\n\n<h2>Example of REST APIs Ready for Consumption<\/h2>\n<p>Some of the URLs I have used are listed below:<\/p>\n<ul>\n<li><a href=\"https:\/\/jsonplaceholder.typicode.com\/posts\">https:\/\/jsonplaceholder.typicode.com\/posts<\/a><\/li>\n<li><a href=\"https:\/\/jsonplaceholder.typicode.com\/users\">https:\/\/jsonplaceholder.typicode.com\/users<\/a><\/li>\n<li><a href=\"https:\/\/jsonplaceholder.typicode.com\/albums\">https:\/\/jsonplaceholder.typicode.com\/albums<\/a><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_11-1024x486.png\" alt=\"\" class=\"wp-image-1714\" srcset=\"http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_11-1024x486.png 1024w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_11-300x142.png 300w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_11-768x364.png 768w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_11-1536x729.png 1536w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_11-210x100.png 210w, http:\/\/nikolapacekvetnic.rs\/wp-content\/uploads\/2022\/10\/RestApiConsTut_11-1960x930.png 1960w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption>Screenshot 12 &#8211; Data Displayed as an HTML Page.<\/figcaption><\/figure>\n\n\n\n<p>The final result can be seen on Screenshot 12.<\/p>\n\n\n\n<h2>References<\/h2>\n<p>Gillis, Alexander S. &#8220;REST API (RESTful API)&#8221;. TechTarget, 11 Oct. 2022, <a href=\"https:\/\/www.techtarget.com\/searchapparchitecture\/definition\/RESTful-API\">https:\/\/www.techtarget.com\/searchapparchitecture\/definition\/RESTful-API<\/a><\/p>\n<p>Citation style is MLA (9th ed.).<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":1721,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55,125,34,124],"tags":[114,117,118,120,119,116,115],"class_list":["post-1700","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code","category-sap","category-tutorial","category-web-dev","tag-abap","tag-api","tag-consume","tag-html","tag-json","tag-rest","tag-sap"],"_links":{"self":[{"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=\/wp\/v2\/posts\/1700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1700"}],"version-history":[{"count":6,"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=\/wp\/v2\/posts\/1700\/revisions"}],"predecessor-version":[{"id":1740,"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=\/wp\/v2\/posts\/1700\/revisions\/1740"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=\/wp\/v2\/media\/1721"}],"wp:attachment":[{"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1700"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/nikolapacekvetnic.rs\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}