{"id":4183,"date":"2020-07-31T17:24:51","date_gmt":"2020-07-31T11:54:51","guid":{"rendered":"https:\/\/www.h2kinfosys.com\/blog\/?p=4183"},"modified":"2024-06-06T17:43:39","modified_gmt":"2024-06-06T12:13:39","slug":"what-is-restful-web-service","status":"publish","type":"post","link":"https:\/\/www.h2kinfosys.com\/blog\/what-is-restful-web-service\/","title":{"rendered":"What is RESTful Web Service?"},"content":{"rendered":"\n<p>RESTful web service is a very lightweight, maintainable, and scalable web service that exposes API from your application in a secure, uniform, and stateless manner to the calling client. The calling client can then perform predefined operations using Restful service. The full form of REST is Representational State Transfer, and the protocol used is HTTP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Key Elements of RESTful:<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Resources: <\/strong>It is the first key element of RESTful. Suppose a web application on the server contains records of several employees. To access the record of a particular employee using REST, you need to issue some command say https:\/\/www.abc.com\/employee-1, which will tell the server to fetch details of the employee whose employee number is 1.<\/li>\n\n\n\n<li><strong>Request Verbs: <\/strong>It describes what to do with the resource. There are many verbs available like POST, PUT, GET, and DELETE. In https:\/\/www.abc.com\/employee-1, the web browser is issuing a GET verb because it wants to fetch the employee record details.<\/li>\n\n\n\n<li><strong>Request Headers: <\/strong>The additional information sent with the request (maybe the type of response required or authorization details).<\/li>\n\n\n\n<li><strong>Request Body: <\/strong>Here, data is sent with the request. Data is usually sent in the request when a POST request is made.\u00a0<\/li>\n\n\n\n<li><strong>Response Body: <\/strong>The main body of the response is Response Body. In https:\/\/www.abc.com\/employee-1, the webserver may return an XML document containing all the details of the employee.<\/li>\n\n\n\n<li><strong>Response Status Codes: <\/strong>The general codes, which are returned with the response are Response Status Codes. For example, code 200 is normally returned when there is no error in returning the response.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Methods in RESTful:<\/strong><\/h2>\n\n\n\n<p>The below diagram shows all the methods used in REST:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>POST: It is used to create a resource on the server.<\/li>\n\n\n\n<li>GET: It is used to retrieve a resource from the server.<\/li>\n\n\n\n<li>PUT: It is used to change the state of the resource or to update it.<\/li>\n\n\n\n<li>DELETE: It is used to delete a resource from the server.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Advantages of RESTful:<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Heterogeneous languages and environments: Web applications in REST can be developed in various programming languages. Also, they can reside in different environments (maybe Windows or Linux). The result should be that they should be able to talk to each other.<\/li>\n\n\n\n<li>The event of devices: Nowadays, everything should work on mobile devices. RESTful Web Service API\u2019s makes it simpler as you don\u2019t need to know what is the underlying layer for the device.<\/li>\n\n\n\n<li>The event of the cloud: Nowadays, all the applications are moving to the cloud. All the cloud-based architectures work on the REST principle.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Principles of RESTful:<\/strong><\/h2>\n\n\n\n<p>The REST architecture depends on the following principles:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>RESTful Client-Server: It is the most fundamental principle of REST. If the client sends a request to the server, the server can either reject the request or provide an appropriate response as per the request.<\/li>\n\n\n\n<li>Stateless: This concept is required so that the server can process the response adequately. It is a simple independent question-answer sequence. The client asks the question; the server gives the answer. The client again asks the question, but the server responds to the new question independently.<\/li>\n\n\n\n<li>Cache: This concept helps in the problem of stateless. If the client asks a question many times, and the server responds to each request independently, it will increase the traffic across the network. Thus, the concept of the cache will store the client\u2019s requests. If the client gives the same request, then instead of going to the server, it will just go to the cache and fetch the required information. This saves the amount of traffic.<\/li>\n\n\n\n<li>Layered System: In this principle, any middle layer can be inserted between the client and the server.<\/li>\n\n\n\n<li>Interface\/Uniform Contract: These include the techniques on which the RESTful works such as POST, GET, PUT, and DELETE.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to create the first RESTful Web Service?<\/strong><\/h2>\n\n\n\n<p>Before writing RESTful Web Services, you need Jersey framework. <strong>Step 1: <\/strong>Open Eclipse IDE. Go to File > New > Project. Select Dynamic Web Project. Name your project.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/f0G80Rap_c50yVq6MDWp8fQMb51s8bgQPETM1x88UdOFUgF-XwraLVYr0aGSTvAGWD65lbzgDeEcNT555TvTcgnd3VtKi-7MXwh5lobBjlHEla8fbgHWQxILrUoWBL2UBK1MjBDjJ2sejkHt1w\" alt=\"https:\/\/4.bp.blogspot.com\/-AAzM2Wo2EBw\/UV0zq-hdD5I\/AAAAAAAAA8M\/GEBLNsPKMy8\/s1600\/NewProjectRESTWSExample.gif\" title=\"\"><\/figure>\n\n\n\n<p><strong>Step 2: <\/strong>Add Jersey Framework and its dependencies (libraries). Copy all the jar files available from the downloaded Jersey folder in WEB-INF\/lib directory of your project.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\\jaxrs-ri-2.17\\jaxrs-ri\\api<br>\\jaxrs-ri-2.17\\jaxrs-ri\\ext<br>\\jaxrs-ri-2.17\\jaxrs-ri\\lib<\/pre>\n\n\n\n<p>Right-click on your project name and then go to the context menu &gt; Build Path &gt; Configure Build Path.<\/p>\n\n\n\n<p>Use the Add JARs button present under Libraries to add the JAR files.<\/p>\n\n\n\n<p><strong>Step 3: <\/strong>Create the source files.<\/p>\n\n\n\n<p><strong><em>User.java<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import java.io.Serializable;&nbsp;&nbsp;\nimport javax.xml.bind.annotation.XmlElement;&nbsp;\nimport javax.xml.bind.annotation.XmlRootElement;&nbsp;\n@XmlRootElement(name = \"user\")&nbsp;\npublic class User implements Serializable {&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;private static final long serialVersionUID = 1L;&nbsp;\n&nbsp;&nbsp;&nbsp;private int emp_id;&nbsp;\n&nbsp;&nbsp;&nbsp;private String name;&nbsp;\n&nbsp;&nbsp;&nbsp;private String profession;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;public User(){}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;public User(int emp_id, String name, String profession){&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.emp_id = emp_id;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.name = name;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.profession = profession;&nbsp;\n&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;public int getId() {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return emp_id;&nbsp;\n&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;@XmlElement&nbsp;\n&nbsp;&nbsp;&nbsp;public void setId(int emp_id) {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.emp_id = emp_id;&nbsp;\n&nbsp;&nbsp;&nbsp;}&nbsp;\n&nbsp;&nbsp;&nbsp;public String getName() {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return name;&nbsp;\n&nbsp;&nbsp;&nbsp;}&nbsp;\n&nbsp;&nbsp;&nbsp;@XmlElement\n&nbsp;&nbsp;&nbsp;public void setName(String name) {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.name = name;&nbsp;\n&nbsp;&nbsp;&nbsp;}&nbsp;\n&nbsp;&nbsp;&nbsp;public String getProfession() {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return profession;&nbsp;\n&nbsp;&nbsp;&nbsp;}&nbsp;\n&nbsp;&nbsp;&nbsp;@XmlElement&nbsp;\n&nbsp;&nbsp;&nbsp;public void setProfession(String profession) {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.profession = profession;&nbsp;\n&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;\n}\n<\/pre>\n\n\n\n<p><strong><em>UserDao.java<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import java.io.File;&nbsp;\nimport java.io.FileInputStream;&nbsp;\nimport java.io.FileNotFoundException;&nbsp;&nbsp;\nimport java.io.FileOutputStream;&nbsp;\nimport java.io.IOException;&nbsp;\nimport java.io.ObjectInputStream;&nbsp;\nimport java.io.ObjectOutputStream;&nbsp;\nimport java.util.ArrayList;&nbsp;\nimport java.util.List;&nbsp;&nbsp;\npublic class UserDao {&nbsp;\n&nbsp;&nbsp;&nbsp;public List&lt;User&gt; getAllUsers(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;User&gt; userList = null;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File file = new File(\"Users.dat\");&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!file.exists()) {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User user = new User(1, \"Mahesh\", \"Teacher\");&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userList = new ArrayList&lt;User&gt;();&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userList.add(user);&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saveUserList(userList);&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream fis = new FileInputStream(file);&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ObjectInputStream ois = new ObjectInputStream(fis);&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userList = (List&lt;User&gt;) ois.readObject();&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ois.close();&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (IOException e) {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (ClassNotFoundException e) {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return userList;&nbsp;\n&nbsp;&nbsp;&nbsp;}&nbsp;\n&nbsp;&nbsp;&nbsp;private void saveUserList(List&lt;User&gt; userList){&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File file = new File(\"Users.dat\");&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream fos;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos = new FileOutputStream(file);&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ObjectOutputStream oos = new ObjectOutputStream(fos);&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oos.writeObject(userList);&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oos.close();&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (FileNotFoundException e) {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (IOException e) {&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;\n&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;\n}\n<\/pre>\n\n\n\n<p><strong><em>UserService.java<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import java.util.List;&nbsp;\nimport javax.ws.rs.GET;&nbsp;\nimport javax.ws.rs.Path;&nbsp;\nimport javax.ws.rs.Produces;&nbsp;\nimport javax.ws.rs.core.MediaType;&nbsp;&nbsp;\n@Path(\"\/UserService\")&nbsp;\npublic class UserService {&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;UserDao userDao = new UserDao();&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;@GET&nbsp;\n&nbsp;&nbsp;&nbsp;@Path(\"\/users\")&nbsp;\n&nbsp;&nbsp;&nbsp;@Produces(MediaType.APPLICATION_XML)&nbsp;\n&nbsp;&nbsp;&nbsp;public List&lt;User&gt; getUsers(){&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return userDao.getAllUsers();&nbsp;\n&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;\n}\n<\/pre>\n\n\n\n<p><strong>Step 4: <\/strong>Create the web.xml configuration file.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?xml version = \"1.0\" encoding = \"UTF-8\"?&gt;&nbsp;\n&lt;web-app xmlns:xsi = \"https:\/\/www.w3.org\/2001\/XMLSchema-instance\"&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;xmlns = \"https:\/\/java.sun.com\/xml\/ns\/javaee\"&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;xsi:schemaLocation=\"https:\/\/java.sun.com\/xml\/ns\/javaee&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;https:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_3_0.xsd\"&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;id = \"WebApp_ID\" version = \"3.0\"&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&lt;display-name&gt;User Management&lt;\/display-name&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&lt;servlet&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;Jersey RESTful Application&lt;\/servlet-name&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-class&gt;org.glassfish.jersey.servlet.ServletContainer&lt;\/servlet-class&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;jersey.config.server.provider.packages&lt;\/param-name&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;com.newproject&lt;\/param-value&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/init-param&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&lt;\/servlet&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&lt;servlet-mapping&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;Jersey RESTful Application&lt;\/servlet-name&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;\/rest\/*&lt;\/url-pattern&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&lt;\/servlet-mapping&gt;&nbsp;&nbsp;&nbsp;\n&lt;\/web-app&gt;\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to Deploy the Project?<\/strong><\/h2>\n\n\n\n<p>Export your above created project as a war file and deploy it in Tomcat. For creating a WAR file, go to File &gt; Export &gt; Web &gt; War File. Select your project name and location of the project. To deploy this project in Tomcat, place your WAR file in <a href=\"https:\/\/www.h2kinfosys.com\/blog\/installing-web-server-tomcat\/\">Tomcat Installation<\/a> Directory &gt; webapps directory. Start the Tomcat.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to run the Project?<\/strong><\/h2>\n\n\n\n<p>We are using Postman here to run the program. Put URL <em><span class=\"has-inline-color has-cyan-bluish-gray-color\">http:\/\/localhost:8080\/UserManagement\/rest\/UserService\/users<\/span><\/em> in Postman, and you will get the following output:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/0SD1ufci3cuz_BwPNjezwkw20N7TXHeF2c_tTYgw3AuSRiz4HLjq7iz7o8Rt0TQ3G-oOcdxAdCmCpPASp-jnifbL8R16sinLSWJ5kOnk8qf1ZSema5K1ByJH2qmhLzqCWuLZVuRl6mX4k8pYvg\" alt=\"RESTful API, All users\" title=\"\"><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>RESTful web service is a very lightweight, maintainable, and scalable web service that exposes API from your application in a secure, uniform, and stateless manner to the calling client. The calling client can then perform predefined operations using Restful service. The full form of REST is Representational State Transfer, and the protocol used is HTTP. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[42],"tags":[449,1175,1176,1174],"class_list":["post-4183","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-tutorials","tag-advantages","tag-key-elements","tag-methods-in-restful","tag-restful-web-service"],"_links":{"self":[{"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/posts\/4183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/comments?post=4183"}],"version-history":[{"count":0,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/posts\/4183\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/media\/4223"}],"wp:attachment":[{"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/media?parent=4183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/categories?post=4183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/tags?post=4183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}