JavaRush /Java блогы /Random-KK /Көктем қорқынышты емес. REST басқару
Павел
Деңгей

Көктем қорқынышты емес. REST басқару

Топта жарияланған
МАҚАЛАЛАР ЦИКЛІНІҢ МАЗМҰНЫ Біреудің жұмысын қайта пайдалану кез келген әзірлеуші ​​үшін қасиетті мәселе 😌 Әрі қарай жылжу үшін компьютерлік желі негіздерін түсіну керек, мұнда мақалалар топтамасы берілген . Негізгі сәттерге назар аударыңыз: HTTP қалай жұмыс істейді, GET, POST, PUT дегеніміз не, жауап күйлері, MVC, JSON және сериялау туралы бөлек оқыңыз . Ұсынылған мысалды сервлеттермен жүзеге асыру пайдалы болады, бұл көктемгі жүкті шын жүректен жақсы көруге көмектеседі. Осы сериядағы көктемгі жүктеу қосымшасының мысалы өте қарапайым, бірақ ол MVC мәнін түсінуге көмектеседі. Төменде қызықтырақ жобаға сілтеме болады. REST және оның көктемде қолданылуымен танысу үшін осы үш мақаланы оқыңыз . Бірінші мақалада сіз REST деген не екенін оқисыз. Екінші мақалада өтініштер мен жауаптар туралы айтылады, Фидель жолдастың пікірін оқып, назар аударыңыз. Үшінші мақала көктемде іске асырудың практикалық мысалын ұсынады, қосымшаны құру тәсілі онша ерекшеленбейді (қарау және салыстыру пайдалы), оны жүзеге асыру. HttpStatus, ResponseEntity <?> туралы сөйлесетін жерге назар аударыңыз (егер <?> түсініксіз болса, 13-тарауды оқыңыз. «Java. Жаңадан бастаушыға арналған нұсқаулықтан» жалпылаулар, Герберт Шилдт), сол мақалада POSTMAN ( қосымша ол туралы қысқа бейне ) POSTMAN орнатыңыз, сізге барлық мүмкіндіктер қажет емес, әртүрлі сұрауларды қалай жасау керектігін қараңыз. Мысалда үштік операторлар бар , ұмытып қалсаңыз, жадыңызды жаңартыңыз. Мысал мақаласының @Autowired көмегімен бұршақ инъекциясын қалай жүзеге асыратынына назар аударыңыз
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Spring 4.3 нұсқасынан бастап, сыныпта тек бір конструктор болса, @Autowired annotationсын алып тастауға болатынын білуіңіз керек. Фреймворктың өзі конструкторда бұршақты енгізу қажет екенін анықтайды. Толығырақ осы дереккөзден оқи аласыз . Егер сіз абай болсаңыз, онда сізде қызмет пакетінің құрылымы туралы сұрақ туындауы керек , атап айтқанда: неге ClientService интерфейсі және ClientServiceImpl ашық класы бар - бұл дұрыс тәжірибе, кейінірек оның не үшін қажет екендігі туралы сөйлесеміз және біз пайдаланатын болады. Мұның бәрі мақалалармен байланысты. Оқымас бұрын жазайық. Олар айтқандай: «Кодсыз күн емес!» Бастапқы нүкте ретінде қарапайым GET сұрауын жасайық. Өткен жолы біз көкөніс алыпсатарлығына өтінім жазған болатынбыз, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Қолданбаны ашыңыз және ru бумасында. java.rush біз контроллер пакетін жасаймыз (MVC үлгісіндегі контроллер осы жерде орналасады). ProductController жалпы сыныбын жасаңыз
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
@RestController annotationсы Spring үшін бұл демалыс контроллері екенін көрсетеді. @RequestMapping - Барлық контроллер әдістері annotation жақшаларында ("/спекуляция") көрсетілген жолдан басталатын URI бар сұрауларды қабылдайды. Сыныпта келесі әдісті жазамыз
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
Біз жобаны іске қосамыз, браузер жолына теріңіз: http://localhost:8080/speculation/simple Біз жауапты аламыз: Easy GET сұрауы Бірнеше түсініктемелер: 1. Біз @RestController-ді контроллер ретінде белгілеген класс жасадық, оған жол @RequestMapping («/ алыпсатарлық») – бұл annotation міндетті емес; онсыз жол «/» арқылы басталады. 2. Біз орындалған кезде жолды қайтаратын (Light GET сұрауы), оны @GetMapping annotationсымен белгілейтін (бұл әдіс арнайы GET сұраулары үшін) және әдіске жолды («/қарапайым») көрсететін әдісті жасадық. 3. Біз жобаны (serverді) 8080 портында іске қостық және мына мекенжайға GET сұрауын жасадық: server/controller/method (http://localhost:8080/speculation/simple) 4. Public String simple(){ қайтару Бұл сұрау үшін "Easy GET сұраушы" әдісі жұмыс істеді; } 5. Әдістің нәтижесі браузерге «Easy GET сұрауы» жолы түрінде қайтарылды. Жарайды, бұл бастама! Сізді ең қызықты мақалалар күтуде. Жоғарыда ұсынылған материалды меңгеру бір күннен артық уақытты алады, мұнда асықпаудың қажеті жоқ, бұл тақырып өте маңызды және оны түсіну керек, «пілді бөліктерге бөліп жеу». Оқыту үшін (материалды игергеннен кейін): алыпсатарлық қолданба контроллерін аяқтаңыз . Әдістерді жасау: 1) Өнімді идентификатор бойынша іздеу productService.findById() әдісін пайдаланыңыз; Мысал шығару
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Қалған контроллер әдістерін енгізгеннен кейін, ойланыңыз: «Неге соңғы екі өріс бос? Онда кейбір мәндер болуы үшін не істеу керек?» 2) Дүкен сөресінен барлық өнімдерді көру: Барлық өнімдерді іздеу үшін productService.findAll() әдісін пайдаланыңыз; Қаптама және белгілеу өрістерін толтыру үшін productService.pack(); productService.makeMoney(); Шығаруда JSON массивінің тізімі өнімдері болуы керек, мысалы:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Дерекқорға жаңа өнімді қосу (өнімді қосу: қырыққабат және көтерме сатып алу бағасы) Қолдану: productService.save(); Әдіс сәйкес Http күйін қайтаруы керек. 4) Өнімді идентификатор бойынша жою Бұл әрекетті орындау үшін алдымен ProductService ішінде productRepository.deleteById (); Содан кейін оны контроллерде пайдаланыңыз. Контроллер әдісі сәйкес Http күйін қайтаруы керек. 5) Идентификатор бойынша өнімді өзгерту (тауардың көтерме бағасы мен тауар атауын өзгерту) Бұл операция алдыңғыларға қарағанда күрделірек болады. Алдымен id арқылы өзгерткіміз келетін өнімді табуымыз керек ProductService.findById(); Содан кейін табылған өнімде (нысан) өрістердің мәнін Put сұрауының негізгі бөлігінде (json_object) алынған нысан өрістерінің мәнімен ауыстырыңыз.Оны келесідей орындауға болады:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Осыдан кейін өзгертілген өнімді сақтау керек productService.save(found_product); Әдіс сәйкес Http күйін қайтаруы керек. Егер сізде бұл әдіспен қиындықтар туындаса, сіз google-ден « put request java », Интернетті әлі ешкім жойған жоқ) Контроллермен жұмыс мұнымен бітпейді, алда әлі көптеген тақырыптар бар...
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION