JavaRush /Блоги Java /Random-TG /Баҳор даҳшатнок нест. Назорати REST-и шумо
Павел
Сатҳи

Баҳор даҳшатнок нест. Назорати REST-и шумо

Дар гурӯҳ нашр шудааст
МАЗМУРИЯТИ ДАВРАИ МАҚОЛАҲО Истифодаи такрории кори ягон кас барои ҳар як таҳиягар кори муқаддас аст 😌 Барои пеш рафтан, шумо бояд асосҳои шабакаи компютериро дарк кунед, дар ин ҷо як силсила мақолаҳо мавҷуданд . Ба нуктаҳои асосӣ диққат диҳед: HTTP чӣ гуна кор мекунад, GET, POST, PUT чист, ҳолати посух, MVC, дар бораи JSON ва сериализатсия алоҳида хонед . Татбиқи мисоли пешниҳодшуда бо сервлетҳо муфид хоҳад буд, ин ба шумо кӯмак мекунад, ки баҳор-боркуниро бо тамоми дил дӯст доред. Намунаи замимаи пурборкунии баҳор аз ин силсила хеле содда аст, аммо он ба шумо дар фаҳмидани моҳияти MVC кӯмак мекунад. Дар зер истинод ба лоиҳаи ҷолибтар хоҳад буд. Барои шинос шудан бо REST ва истифодаи он дар фасли баҳор, ин се мақоларо хонед . Дар мақолаи аввал шумо хоҳед хонед, ки REST чист. Дар маколаи дуйум дар бораи дархосту чавобхо сухан меравад, хатман мулохизахои рафик Фидельро хонед ва ба назар гиред. Дар мақолаи сеюм як мисоли амалии татбиқ дар фасли баҳор пешниҳод карда мешавад, равиши эҷоди барнома чандон фарқ намекунад (нигох кардан ва муқоиса кардан муфид аст), татбиқ кардани он. Диққат диҳед, ки онҳо дар бораи HttpStatus, ResponseEntity <?> сӯҳбат мекунанд (агар <?> печида бошад, пас боби 13-ро хонед. Умумкуниҳо аз "Java. A Guide Beginner's", Герберт Шилдт), дар ҳамон мақола дар бораи POSTMAN ( Илова бар ин, видеои кӯтоҳ дар бораи он ) POSTMAN -ро насб кунед, ба шумо ҳама хусусиятҳо лозим нест, бубинед, ки чӣ гуна дархостҳои гуногун эҷод кунед. Дар мисол операторҳои сегона мавҷуданд , агар фаромӯш карда бошед, хотираи худро нав кунед. Диққат диҳед, ки чӣ гуна мақолаи мисол тазриқи лӯбиёро бо истифода аз @Autowired амалӣ мекунад
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Шумо бояд донед, ки аз Spring 4.3 сар карда, шарҳи @Autowired мумкин нест, агар синф танҳо як созанда дошта бошад. Худи чаҳорчӯба муайян мекунад, ки лӯбиё бояд дар конструктор татбиқ карда шавад. Шумо метавонед бештар дар ин манбаъ хонед . Ва агар шумо эҳтиёт бошед, пас шумо бояд дар бораи сохтори бастаи хидматҳо саволе дошта бошед , яъне: чаро интерфейси ClientService ва синфи ҷамъиятии ClientServiceImpl вуҷуд дорад - ин таҷрибаи дуруст аст, баъдтар мо дар бораи он ки чаро он лозим аст ва мо сӯҳбат хоҳем кард. истифода хоҳад кард. Ин ҳама бо мақолаҳост. Пеш аз хондан, биёед нависем. Чунон ки мегуянд: «Рузи бе code нест!». Ҳамчун нуқтаи ибтидоӣ, биёед дархости оддии GET эҷод кунем. Бори охир мо барои тахминҳои сабзавот ариза навиштем, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Барномаро кушоед ва дар ru.java мо бастаи контроллерҳоро эҷод мекунем (назоратчиён аз намунаи MVC дар ин ҷо ҷойгир хоҳанд шуд). Синфи ҷамъиятии ProductController эҷод кунед
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
Шарҳи @RestController ба Spring нишон медиҳад, ки ин контролери истироҳат аст. @RequestMapping - Ҳама усулҳои контролер дархостҳоро бо URI қабул мекунанд, ки бо сатри дар қавсҳои эзоҳ нишондодашуда оғоз мешаванд ("/ тахминҳо"). Мо дар синф усули зеринро менависем
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
Мо лоиҳаро оғоз мекунем, дар сатри браузер нависед: http://localhost:8080/speculation/simple Мо ҷавоб мегирем: Дархости осони GET Якчанд тавзеҳот: 1. Мо синферо сохтем, ки @RestController-ро ҳамчун контроллер қайд карда буд. роҳ ба он @RequestMapping ("/ тахмин") - ин эзоҳ ихтиёрист; бидуни он, роҳ бо "/" оғоз мешавад. 2. Мо усулеро сохтем, ки ҳангоми иҷро шудан сатрро бармегардонад (Light GET дархост), онро бо шарҳи @GetMapping қайд кардем (ки ин усул махсусан барои дархостҳои GET аст) ва роҳро ба усул нишон додем ("/оддӣ") 3. Мо лоиҳаро (serverро) дар бандари 8080 оғоз кардем ва ба суроғаи: server/controller/method (http://localhost:8080/speculation/simple) дархости GET додем . Усули "Дархосткунандаи осони GET" барои ин дархост кор кард; } 5. Натиҷаи метод ба браузер дар шакли сатри "Easy GET request" баргардонида шуд. Бале, ин оғоз аст! Мақолаҳои ҷолибтарин шуморо интизоранд. Азхуд кардани маводи дар боло пешниҳодшуда бештар аз як рӯзро мегирад, дар ин ҷо шитоб кардан лозим нест, ин мавзӯъ хеле муҳим аст ва бояд дарк кард, “филро қисм-қисм бихӯред”. Барои омӯзиш (пас аз омӯхтани мавод): Назоратчии барномаи тахминиро ба итмом расонед . Усулҳоро эҷод кунед: 1) Ҷустуҷӯи маҳсулот аз рӯи id Усули 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) Нест кардани маҳсулот аз рӯи id Барои ин, аввал дар ProductService усулеро, ки дорои productRepository.deleteById(); Ва он гоҳ, онро дар контроллер истифода баред. Усули контроллер бояд ҳолати мувофиқи Http-ро баргардонад. 5) Тағйир додани маҳсулот аз рӯи ID (тағйир додани нархи яклухт ва номи маҳсулот) Ин амалиёт нисбат ба амалиётҳои қаблӣ мураккабтар хоҳад буд. Аввалан мо бояд маҳсулотеро пайдо кунем, ки мо мехоҳем бо id тағир диҳем Use productService.findById(); Сипас, дар маҳсулоти (an object) ёфтшуда арзиши майдонҳоро бо арзиши майдонҳои an objectи дар бадани дархости Put (json_object) гирифташуда иваз кунед.Ин корро чунин кардан мумкин аст:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Пас аз ин, маҳсулоти ивазшуда бояд захира карда шавад productService.save(found_product); Усул бояд ҳолати мувофиқи Http-ро баргардонад. Агар шумо бо ин усул мушкилот дошта бошед, шумо метавонед дар гугл " put request java", ки Интернетро то ҳол касе бекор накардааст) Кор бо контроллерҳо бо ин тамом намешавад, мавзӯъҳои зиёде дар пешанд...
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION