{"id":4301,"date":"2021-08-02T10:54:20","date_gmt":"2021-08-02T10:54:20","guid":{"rendered":"https:\/\/www.bearloga.space\/?page_id=4301"},"modified":"2021-08-02T10:54:21","modified_gmt":"2021-08-02T10:54:21","slug":"veb-servisy-restful-metody","status":"publish","type":"page","link":"https:\/\/www.bearloga.space\/uk\/veb-servisy-restful-metody\/","title":{"rendered":"\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b RESTful \u2014 \u041c\u0435\u0442\u043e\u0434\u044b"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438, \u0432\u0435\u0431-\u0441\u043b\u0443\u0436\u0431\u0430 RESTful \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0433\u043b\u0430\u0433\u043e\u043b\u044b HTTP \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438.&nbsp;\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f HTTP-\u0433\u043b\u0430\u0433\u043e\u043b\u043e\u0432.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>HTTP \u043c\u0435\u0442\u043e\u0434<\/th><td>\u041f\u041e\u041b\u0423\u0427\u0418\u0422\u042c<\/td><\/tr><tr><th>URI<\/th><td>HTTP: \/\/ \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439: 8080 \/ UserManagement \/ \u043e\u0442\u0434\u044b\u0445 \/ UserService \/ \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/td><\/tr><tr><th>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f<\/th><td>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/td><\/tr><tr><th>\u0422\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/th><td>\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>HTTP \u043c\u0435\u0442\u043e\u0434<\/th><td>\u041f\u041e\u041b\u0423\u0427\u0418\u0422\u042c<\/td><\/tr><tr><th>URI<\/th><td>HTTP: \/\/ \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439: 8080 \/ UserManagement \/ \u043e\u0442\u0434\u044b\u0445 \/ UserService \/ \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \/ 1<\/td><\/tr><tr><th>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f<\/th><td>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Id 1<\/td><\/tr><tr><th>\u0422\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/th><td>\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>HTTP \u043c\u0435\u0442\u043e\u0434<\/th><td>\u0421\u041e\u041e\u0411\u0429\u0415\u041d\u0418\u0415<\/td><\/tr><tr><th>URI<\/th><td>HTTP: \/\/ \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439: 8080 \/ UserManagement \/ \u043e\u0442\u0434\u044b\u0445 \/ UserService \/ \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \/ 2<\/td><\/tr><tr><th>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f<\/th><td>\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c 2<\/td><\/tr><tr><th>\u0422\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/th><td>Non-\u0418\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u044b\u0439<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>HTTP \u043c\u0435\u0442\u043e\u0434<\/th><td>\u041f\u041e\u041b\u041e\u0416\u0418\u041b<\/td><\/tr><tr><th>URI<\/th><td>HTTP: \/\/ \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439: 8080 \/ UserManagement \/ \u043e\u0442\u0434\u044b\u0445 \/ UserService \/ \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \/ 2<\/td><\/tr><tr><th>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f<\/th><td>\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c 2<\/td><\/tr><tr><th>\u0422\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/th><td>N \/ A<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>HTTP \u043c\u0435\u0442\u043e\u0434<\/th><td>\u0423\u0414\u0410\u041b\u042f\u0422\u042c<\/td><\/tr><tr><th>URI<\/th><td>HTTP: \/\/ \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439: 8080 \/ UserManagement \/ \u043e\u0442\u0434\u044b\u0445 \/ UserService \/ \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \/ 1<\/td><\/tr><tr><th>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f<\/th><td>\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c 1<\/td><\/tr><tr><th>\u0422\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/th><td>\u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>HTTP \u043c\u0435\u0442\u043e\u0434<\/th><td>\u041e\u041f\u0426\u0418\u0418<\/td><\/tr><tr><th>URI<\/th><td>HTTP: \/\/ \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439: 8080 \/ UserManagement \/ \u043e\u0442\u0434\u044b\u0445 \/ UserService \/ \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/td><\/tr><tr><th>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f<\/th><td>\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0435<\/td><\/tr><tr><th>\u0422\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/th><td>\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>HTTP \u043c\u0435\u0442\u043e\u0434<\/th><td>\u0413\u041e\u041b\u041e\u0412\u0410<\/td><\/tr><tr><th>URI<\/th><td>HTTP: \/\/ \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439: 8080 \/ UserManagement \/ \u043e\u0442\u0434\u044b\u0445 \/ UserService \/ \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/td><\/tr><tr><th>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f<\/th><td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a HTTP, \u0431\u0435\u0437 \u0442\u0435\u043b\u0430<\/td><\/tr><tr><th>\u0422\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/th><td>\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0412\u043e\u0442 \u0432\u0430\u0436\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 GET \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b.<\/li><li>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 PUT \u0438 DELETE \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u044b\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u044d\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u0432\u044b\u0437\u0432\u0430\u043d\u044b.<\/li><li>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 PUT \u0438 POST \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b, \u0441 \u0440\u0430\u0437\u043d\u0438\u0446\u0435\u0439 \u043b\u0438\u0448\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f PUT \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u0430, \u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f POST \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0440\u0430\u0437\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 GET \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 PUT \u0438 DELETE \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u044b\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u044d\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u0432\u044b\u0437\u0432\u0430\u043d\u044b.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 PUT \u0438 POST \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b, \u0441 \u0440\u0430\u0437\u043d\u0438\u0446\u0435\u0439 \u043b\u0438\u0448\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f PUT \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u0430, \u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f POST \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0440\u0430\u0437\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u043f\u0440\u0438\u043c\u0435\u0440<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043c \u041f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u00a0<a href=\"https:\/\/translate.googleusercontent.com\/translate_c?depth=1&amp;rurl=translate.google.ru&amp;sl=en&amp;sp=nmt4&amp;tl=ru&amp;u=https:\/\/www.tutorialspoint.com\/restful\/restful_first_application.htm&amp;xid=17259,15700022,15700186,15700190,15700256,15700259,15700262&amp;usg=ALkJrhjeWBgjz4mxPhVjh9ku9hIyzSNmFw\" target=\"_blank\" rel=\"noopener\">RESTful Web Services \u2014 First Application,<\/a>\u00a0\u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c Web-\u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 CRUD (Create, Read, Update, Delete).\u00a0\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0432\u0432\u043e\u0434 \/ \u0432\u044b\u0432\u043e\u0434 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435&nbsp;<strong>\u0444\u0430\u0439\u043b\u044b UserService.java<\/strong>&nbsp;,&nbsp;<strong>User.java<\/strong>&nbsp;,&nbsp;<strong>UserDao.java<\/strong>&nbsp;\u0432 \u043f\u0430\u043a\u0435\u0442\u0435 com.tutorialspoint.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>User.java<\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">package com.tutorialspoint;\n\nimport java.io.Serializable;\n\nimport javax.xml.bind.annotation.XmlElement;\nimport javax.xml.bind.annotation.XmlRootElement;\n@XmlRootElement(name = \"user\")\npublic class User implements Serializable {\n\n   private static final long serialVersionUID = 1L;\n   private int id;\n   private String name;\n   private String profession;\n\n   public User(){}\n\n   public User(int id, String name, String profession){\n      this.id = id;\n      this.name = name;\n      this.profession = profession;\n   }\n\n   public int getId() {\n      return id;\n   }\n   @XmlElement\n   public void setId(int id) {\n      this.id = id;\n   }\n   public String getName() {\n      return name;\n   }\n   @XmlElement\n      public void setName(String name) {\n      this.name = name;\n   }\n   public String getProfession() {\n      return profession;\n   }\n   @XmlElement\n   public void setProfession(String profession) {\n      this.profession = profession;\n   }\t\n\n   @Override\n   public boolean equals(Object object){\n      if(object == null){\n         return false;\n      }else if(!(object instanceof User)){\n         return false;\n      }else {\n         User user = (User)object;\n         if(id == user.getId()\n            &amp;&amp; name.equals(user.getName())\n            &amp;&amp; profession.equals(user.getProfession())\n         ){\n            return true;\n         }\t\t\t\n      }\n      return false;\n   }\t\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em>UserDao.java<\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">package com.tutorialspoint;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.FileNotFoundException;\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class UserDao {\n   public List&lt;User&gt; getAllUsers(){\n      List&lt;User&gt; userList = null;\n      try {\n         File file = new File(\"Users.dat\");\n         if (!file.exists()) {\n            User user = new User(1, \"Mahesh\", \"Teacher\");\n            userList = new ArrayList&lt;User&gt;();\n            userList.add(user);\n            saveUserList(userList);\t\t\n         }\n         else{\n            FileInputStream fis = new FileInputStream(file);\n            ObjectInputStream ois = new ObjectInputStream(fis);\n            userList = (List&lt;User&gt;) ois.readObject();\n            ois.close();\n         }\n      } catch (IOException e) {\n         e.printStackTrace();\n      } catch (ClassNotFoundException e) {\n         e.printStackTrace();\n      }\t\t\n      return userList;\n   }\n\n   public User getUser(int id){\n      List&lt;User&gt; users = getAllUsers();\n\n      for(User user: users){\n         if(user.getId() == id){\n            return user;\n         }\n      }\n      return null;\n   }\n\n   public int addUser(User pUser){\n      List&lt;User&gt; userList = getAllUsers();\n      boolean userExists = false;\n      for(User user: userList){\n         if(user.getId() == pUser.getId()){\n            userExists = true;\n            break;\n         }\n      }\t\t\n      if(!userExists){\n         userList.add(pUser);\n         saveUserList(userList);\n         return 1;\n      }\n      return 0;\n   }\n\n   public int updateUser(User pUser){\n      List&lt;User&gt; userList = getAllUsers();\n\n      for(User user: userList){\n         if(user.getId() == pUser.getId()){\n            int index = userList.indexOf(user);\t\t\t\n            userList.set(index, pUser);\n            saveUserList(userList);\n            return 1;\n         }\n      }\t\t\n      return 0;\n   }\n\n   public int deleteUser(int id){\n      List&lt;User&gt; userList = getAllUsers();\n\n      for(User user: userList){\n         if(user.getId() == id){\n            int index = userList.indexOf(user);\t\t\t\n            userList.remove(index);\n            saveUserList(userList);\n            return 1;   \n         }\n      }\t\t\n      return 0;\n   }\n\n   private void saveUserList(List&lt;User&gt; userList){\n      try {\n         File file = new File(\"Users.dat\");\n         FileOutputStream fos;\n\n         fos = new FileOutputStream(file);\n\n         ObjectOutputStream oos = new ObjectOutputStream(fos);\t\t\n         oos.writeObject(userList);\n         oos.close();\n      } catch (FileNotFoundException e) {\n         e.printStackTrace();\n      } catch (IOException e) {\n         e.printStackTrace();\n      }\n   }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em>UserService.java<\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">package com.tutorialspoint;\n\nimport java.io.IOException;\nimport java.util.List;\n\nimport javax.servlet.http.HttpServletResponse;\nimport javax.ws.rs.Consumes;\nimport javax.ws.rs.DELETE;\nimport javax.ws.rs.FormParam;\nimport javax.ws.rs.GET;\nimport javax.ws.rs.OPTIONS;\nimport javax.ws.rs.POST;\nimport javax.ws.rs.PUT;\nimport javax.ws.rs.Path;\nimport javax.ws.rs.PathParam;\nimport javax.ws.rs.Produces;\nimport javax.ws.rs.core.Context;\nimport javax.ws.rs.core.MediaType;\n\n@Path(\"\/UserService\")\npublic class UserService {\n\t\n   UserDao userDao = new UserDao();\n   private static final String SUCCESS_RESULT=\"&lt;result&gt;success&lt;\/result&gt;\";\n   private static final String FAILURE_RESULT=\"&lt;result&gt;failure&lt;\/result&gt;\";\n\n\n   @GET\n   @Path(\"\/users\")\n   @Produces(MediaType.APPLICATION_XML)\n   public List&lt;User&gt; getUsers(){\n      return userDao.getAllUsers();\n   }\n\n   @GET\n   @Path(\"\/users\/{userid}\")\n   @Produces(MediaType.APPLICATION_XML)\n   public User getUser(@PathParam(\"userid\") int userid){\n      return userDao.getUser(userid);\n   }\n\n   @POST\n   @Path(\"\/users\")\n   @Produces(MediaType.APPLICATION_XML)\n   @Consumes(MediaType.APPLICATION_FORM_URLENCODED)\n   public String createUser(@FormParam(\"id\") int id,\n      @FormParam(\"name\") String name,\n      @FormParam(\"profession\") String profession,\n      @Context HttpServletResponse servletResponse) throws IOException{\n      User user = new User(id, name, profession);\n      int result = userDao.addUser(user);\n      if(result == 1){\n         return SUCCESS_RESULT;\n      }\n      return FAILURE_RESULT;\n   }\n\n   @PUT\n   @Path(\"\/users\")\n   @Produces(MediaType.APPLICATION_XML)\n   @Consumes(MediaType.APPLICATION_FORM_URLENCODED)\n   public String updateUser(@FormParam(\"id\") int id,\n      @FormParam(\"name\") String name,\n      @FormParam(\"profession\") String profession,\n      @Context HttpServletResponse servletResponse) throws IOException{\n      User user = new User(id, name, profession);\n      int result = userDao.updateUser(user);\n      if(result == 1){\n         return SUCCESS_RESULT;\n      }\n      return FAILURE_RESULT;\n   }\n\n   @DELETE\n   @Path(\"\/users\/{userid}\")\n   @Produces(MediaType.APPLICATION_XML)\n   public String deleteUser(@PathParam(\"userid\") int userid){\n      int result = userDao.deleteUser(userid);\n      if(result == 1){\n         return SUCCESS_RESULT;\n      }\n      return FAILURE_RESULT;\n   }\n\n   @OPTIONS\n   @Path(\"\/users\")\n   @Produces(MediaType.APPLICATION_XML)\n   public String getSupportedOperations(){\n      return \"&lt;operations&gt;GET, PUT, POST, DELETE&lt;\/operations&gt;\";\n   }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0422\u0435\u043f\u0435\u0440\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Eclipse, \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0444\u0430\u0439\u043b war \u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 tomcat.&nbsp;\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c WAR-\u0444\u0430\u0439\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e eclipse, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00ab&nbsp;<strong>\u0424\u0430\u0439\u043b\u00bb -&gt; \u00ab\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u00bb -&gt; \u00ab\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u00bb&gt; \u00ab\u0424\u0430\u0439\u043b \u0432\u043e\u0439\u043d\u044b\u00bb<\/strong>&nbsp;\u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00abUserManagement \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u00bb \u0438 \u043f\u0430\u043f\u043a\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.&nbsp;\u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0444\u0430\u0439\u043b war \u0432 Tomcat, \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0444\u0430\u0439\u043b UserManagement.war \u0432&nbsp;<strong>\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Tomcat<\/strong>&nbsp;&gt; \u043a\u0430\u0442\u0430\u043b\u043e\u0433 webapps \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 Tomcat.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u0431-\u0441\u043b\u0443\u0436\u0431\u044b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0414\u0436\u0435\u0440\u0441\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 API \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u0435\u0431-\u0441\u043b\u0443\u0436\u0431\u044b \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0431-\u0441\u043b\u0443\u0436\u0431.&nbsp;\u041c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430&nbsp;<strong>WebServiceTester.java<\/strong>&nbsp;\u0432 \u043f\u0430\u043a\u0435\u0442\u0435 com.tutorialspoint \u0432 \u0442\u043e\u043c \u0436\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>WebServiceTester.java<\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">package com.tutorialspoint;\n\nimport java.util.List;\n\nimport javax.ws.rs.client.Client;\nimport javax.ws.rs.client.ClientBuilder;\nimport javax.ws.rs.client.Entity;\nimport javax.ws.rs.core.Form;\nimport javax.ws.rs.core.GenericType;\nimport javax.ws.rs.core.MediaType;\n\npublic class WebServiceTester  {\n\n   private Client client;\n   private String REST_SERVICE_URL = \"http:\/\/localhost:8080\/UserManagement\/rest\/UserService\/users\";\n   private static final String SUCCESS_RESULT=\"&lt;result&gt;success&lt;\/result&gt;\";\n   private static final String PASS = \"pass\";\n   private static final String FAIL = \"fail\";\n\n   private void init(){\n      this.client = ClientBuilder.newClient();\n   }\n\n   public static void main(String[] args){\n      WebServiceTester tester = new WebServiceTester();\n      \/\/initialize the tester\n      tester.init();\n      \/\/test get all users Web Service Method\n      tester.testGetAllUsers();\n      \/\/test get user Web Service Method \n      tester.testGetUser();\n      \/\/test update user Web Service Method\n      tester.testUpdateUser();\n      \/\/test add user Web Service Method\n      tester.testAddUser();\n      \/\/test delete user Web Service Method\n      tester.testDeleteUser();\n   }\n   \/\/Test: Get list of all users\n   \/\/Test: Check if list is not empty\n   private void testGetAllUsers(){\n      GenericType&lt;List&lt;User&gt;&gt; list = new GenericType&lt;List&lt;User&gt;&gt;() {};\n      List&lt;User&gt; users = client\n         .target(REST_SERVICE_URL)\n         .request(MediaType.APPLICATION_XML)\n         .get(list);\n      String result = PASS;\n      if(users.isEmpty()){\n         result = FAIL;\n      }\n      System.out.println(\"Test case name: testGetAllUsers, Result: \" + result );\n   }\n   \/\/Test: Get User of id 1\n   \/\/Test: Check if user is same as sample user\n   private void testGetUser(){\n      User sampleUser = new User();\n      sampleUser.setId(1);\n\n      User user = client\n         .target(REST_SERVICE_URL)\n         .path(\"\/{userid}\")\n         .resolveTemplate(\"userid\", 1)\n         .request(MediaType.APPLICATION_XML)\n         .get(User.class);\n      String result = FAIL;\n      if(sampleUser != null &amp;&amp; sampleUser.getId() == user.getId()){\n         result = PASS;\n      }\n      System.out.println(\"Test case name: testGetUser, Result: \" + result );\n   }\n   \/\/Test: Update User of id 1\n   \/\/Test: Check if result is success XML.\n   private void testUpdateUser(){\n      Form form = new Form();\n      form.param(\"id\", \"1\");\n      form.param(\"name\", \"suresh\");\n      form.param(\"profession\", \"clerk\");\n\n      String callResult = client\n         .target(REST_SERVICE_URL)\n         .request(MediaType.APPLICATION_XML)\n         .put(Entity.entity(form,\n            MediaType.APPLICATION_FORM_URLENCODED_TYPE),\n            String.class);\n      String result = PASS;\n      if(!SUCCESS_RESULT.equals(callResult)){\n         result = FAIL;\n      }\n\n      System.out.println(\"Test case name: testUpdateUser, Result: \" + result );\n   }\n   \/\/Test: Add User of id 2\n   \/\/Test: Check if result is success XML.\n   private void testAddUser(){\n      Form form = new Form();\n      form.param(\"id\", \"2\");\n      form.param(\"name\", \"naresh\");\n      form.param(\"profession\", \"clerk\");\n\n      String callResult = client\n         .target(REST_SERVICE_URL)\n         .request(MediaType.APPLICATION_XML)\n         .post(Entity.entity(form,\n            MediaType.APPLICATION_FORM_URLENCODED_TYPE),\n            String.class);\n   \n      String result = PASS;\n      if(!SUCCESS_RESULT.equals(callResult)){\n         result = FAIL;\n      }\n\n      System.out.println(\"Test case name: testAddUser, Result: \" + result );\n   }\n   \/\/Test: Delete User of id 2\n   \/\/Test: Check if result is success XML.\n   private void testDeleteUser(){\n      String callResult = client\n         .target(REST_SERVICE_URL)\n         .path(\"\/{userid}\")\n         .resolveTemplate(\"userid\", 2)\n         .request(MediaType.APPLICATION_XML)\n         .delete(String.class);\n\n      String result = PASS;\n      if(!SUCCESS_RESULT.equals(callResult)){\n         result = FAIL;\n      }\n\n      System.out.println(\"Test case name: testDeleteUser, Result: \" + result );\n   }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0435\u0441\u0442\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Eclipse.&nbsp;\u0429\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u043f\u043e \u0444\u0430\u0439\u043b\u0443 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u043f\u0446\u0438\u044e&nbsp;<strong>\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 -&gt; \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Java<\/strong>&nbsp;.&nbsp;\u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Eclipse \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438, \u0432\u0435\u0431-\u0441\u043b\u0443\u0436\u0431\u0430 RESTful \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0433\u043b\u0430\u0433\u043e\u043b\u044b HTTP \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438.&nbsp;\u0412 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[135],"tags":[],"class_list":["post-4301","page","type-page","status-publish","hentry","category-restful"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/pages\/4301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/comments?post=4301"}],"version-history":[{"count":0,"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/pages\/4301\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/media?parent=4301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/categories?post=4301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bearloga.space\/uk\/wp-json\/wp\/v2\/tags?post=4301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}