最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Postman和Chrome的開發(fā)者功能探究項(xiàng)目(畢業(yè)設(shè)計(jì)項(xiàng)目)

 更新時(shí)間:2020年12月01日 14:27:36   作者:歡迎!  
這篇文章主要介紹了利用Postman和Chrome的開發(fā)者功能探究項(xiàng)目(畢業(yè)設(shè)計(jì)項(xiàng)目),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

  前兩天忙著寫開題報(bào)告,沒有來得及做項(xiàng)目,今天繼續(xù)研究一下這個(gè)項(xiàng)目。

  上次研究到后端的DAO層,研究了一下后端和數(shù)據(jù)庫交互的過程,service層封裝了一些DAO層的函數(shù),沒有什么太多的東西,今天研究一下controller層和前端的代碼。

  首先,一個(gè)典型的controller層代碼是這樣的:

package...

import ...
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class LibraryController {
 @Autowired
 BookService bookService;

 @CrossOrigin
 @GetMapping("/api/books")
 public List<Book> list() throws Exception {
  return bookService.list();
 }

 ...
}

  按照慣例,首先看一下各個(gè)注解:

  @RestController:相當(dāng)于@ResponseBody+@Controller注解

  @ResponseBody:@ResponseBody的作用其實(shí)是將java對象轉(zhuǎn)為json格式的數(shù)據(jù)。將controller的方法返回的對象通過適當(dāng)?shù)霓D(zhuǎn)換器轉(zhuǎn)換為指定的格式之后,寫入到response對象的body區(qū)。

  @Controller:用于標(biāo)記在一個(gè)類上,使用它標(biāo)記的類就是一個(gè)SpringMVC Controller對象。分發(fā)處理器將會掃描使用了該注解的類的方法,并檢測該方法是否使用了@RequestMapping注解。@Controller只是定義了一個(gè)控制器類,而使用@RequestMapping注解的方法才是真正處理請求的處理器。

  @Autowired:自動(dòng)裝配,和控制反轉(zhuǎn)什么的有關(guān)系,這個(gè)這里不展開了。

  @CrossOrigin:跨域,這個(gè)問題大概就是說前后端不用一個(gè)服務(wù)器,瀏覽器對這種行為會出于安全考慮不允許跨域訪問,所以需要設(shè)置一下,具體細(xì)節(jié)比較瑣碎,這里不展開了。

  @GetMapping:SpringMVC以前版本的@RequestMapping,到了新版本被下面新注釋替代,相當(dāng)于增加的選項(xiàng):@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping,從命名約定我們可以看到每個(gè)注釋都是為了處理各自的傳入請求方法類型,即@GetMapping用于處理請求方法的GET類型,@PostMapping用于處理請求方法的POST類型等。如果我們想使用傳統(tǒng)的@RequestMapping注釋實(shí)現(xiàn)URL處理程序,那么它應(yīng)該是這樣的:@RequestMapping(value = "/get/{id}", method = RequestMethod.GET),新方法可以簡化為:@GetMapping("/get/{id}")。

  后面的函數(shù)中還有一些其他的注解,一起看一下:

@CrossOrigin
 @PostMapping("/api/books")
 public Book addOrUpdate(@RequestBody Book book) throws Exception {
  bookService.addOrUpdate(book);
  return book;
 }

 @CrossOrigin
 @PostMapping("/api/delete")
 public void delete(@RequestBody Book book) throws Exception {
  bookService.deleteById(book.getId());
 }

 @CrossOrigin
 @GetMapping("/api/categories/{cid}/books")
 public List<Book> listByCategory(@PathVariable("cid") int cid) throws Exception {
  if (0 != cid) {
   return bookService.listByCategory(cid);
  } else {
   return list();
  }
 }

 @CrossOrigin
 @GetMapping("/api/search")
 public List<Book> searchResult(@RequestParam("keywords") String keywords) {
  // 關(guān)鍵詞為空時(shí)查詢出所有書籍
  if ("".equals(keywords)) {
   return bookService.list();
  } else {
   return bookService.Search(keywords);
  }
 }

  @RequestBody:@RequestBody主要用來接收前端傳遞給后端的json字符串中的數(shù)據(jù)的(請求體中的數(shù)據(jù)的);GET方式無請求體,所以使用@RequestBody接收數(shù)據(jù)時(shí),前端不能使用GET方式提交數(shù)據(jù),而是用POST方式進(jìn)行提交。

  @PathVariable是spring3.0的一個(gè)新功能:接收請求路徑中占位符的值

  @RequestParam:@RequestParam有三個(gè)配置參數(shù):required表示是否必須,默認(rèn)為true,必須。defaultValue可設(shè)置請求參數(shù)的默認(rèn)值。value為接收url的參數(shù)名(相當(dāng)于key值。這個(gè)好像用法比較復(fù)雜,之后再仔細(xì)看一下。

Postman和chrome測試

  首先我們登錄進(jìn)入系統(tǒng),我這里前后端交互使用的8443端口,后續(xù)測試也在8443端口上進(jìn)行。

  

  

  可以看到發(fā)送了一個(gè)請求報(bào)文,收到了一個(gè)回復(fù)報(bào)文,回復(fù)報(bào)文的內(nèi)容是一些json鍵值對,下面放了一個(gè)樣例:

{
  "id": 69,
  "category": {
   "id": 1,
   "name": "文學(xué)"
  },
  "cover": "https://i.loli.net/2019/04/10/5cad63931ce27.jpg",
  "title": "謀殺狄更斯",
  "author": "[美] 丹·西蒙斯 ",
  "date": "2019-4",
  "press": "上海文藝出版社",
  "abs": "“狄更斯的那場意外災(zāi)難發(fā)生在1865年6月9日,那列搭載他的成功、平靜、理智、手稿與情婦的火車一路飛馳,迎向鐵道上的裂隙,突然觸目驚心地墜落了。”"
 }

  與Pojo中的book和category完全對應(yīng),這里放一下代碼。

public class Book {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Column(name = "id")
 int id;

 //把 category 對象的 id 屬性作為 cid 進(jìn)行了查詢
 @ManyToOne
 @JoinColumn(name="cid")
 private Category category;

 String cover;
 String title;
 String author;
 String date;
 String press;
 String abs;
 ...
}

public class Category {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Column(name = "id")
 int id;

 String name;
 ...
}

  前端的EditForm.vue中有這么一段代碼顯然是和這個(gè)相對應(yīng)的,這里我們先不去管這個(gè):

  

  我們接著測試一下其他方法:

  

  

  構(gòu)造了一個(gè)post報(bào)文,返回200表示成功了,有趣的是雖然傳入了id,但是由于id是自增的,并沒有起作用,再使用get方法查詢一下。

  

  

  下一個(gè)方法表示要?jiǎng)h除一本書,我們從代碼這個(gè)大概知道是拿到一個(gè)json對象,轉(zhuǎn)換成javabean的book,然后根據(jù)id把書刪除了,我們應(yīng)該傳入一個(gè)json對象的書,試一下:

  

  成功了,但是有趣的是在chrome瀏覽器中,對于前端的行為不完全是這樣:

  根據(jù)網(wǎng)上的教程,F(xiàn)12打開后,在Network下勾選Preserve log就可以監(jiān)控報(bào)文。

  

  我們打開后刪除一本書。

  

  雙擊點(diǎn)開后發(fā)現(xiàn)Request只傳遞了id,因?yàn)樵瓉砗瘮?shù)里只需要id,所以只傳id是完全沒毛病的,這個(gè)我在postman里面測過了,就不發(fā)上來了:

  

  

  

  這個(gè)就是拿一個(gè)從url路徑里面拿一個(gè)參數(shù),測試了一下不存在的分類號,不會報(bào)錯(cuò),而是給一個(gè)空集合。

  

  這個(gè)沒太看懂參數(shù)是怎么傳遞的,我們用Chrome看一下。

  是通過在路徑后面加上“?keyword=關(guān)鍵詞”實(shí)現(xiàn)的。

  

  去postman里面試一下,成功!

  

  今天的探索到這里就結(jié)束了,后面再看一下前端代碼的邏輯,這個(gè)交互過程就比較清楚了。

到此這篇關(guān)于利用Postman和Chrome的開發(fā)者功能探究項(xiàng)目(畢業(yè)設(shè)計(jì)項(xiàng)目)的文章就介紹到這了,更多相關(guān)Postman和Chrome開發(fā)項(xiàng)目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Callable實(shí)現(xiàn)多線程步驟詳解

    Callable實(shí)現(xiàn)多線程步驟詳解

    這篇文章主要介紹了Callable實(shí)現(xiàn)多線程步驟詳解,Callable是一個(gè)接口,用于實(shí)現(xiàn)多線程,與實(shí)現(xiàn)Runnable類似,但是功能更強(qiáng)大,該方法可以在任務(wù)結(jié)束后提供一個(gè)返回值,需要的朋友可以參考下
    2023-10-10
  • Java實(shí)現(xiàn)單例設(shè)計(jì)模式方法解析

    Java實(shí)現(xiàn)單例設(shè)計(jì)模式方法解析

    這篇文章主要介紹了Java實(shí)現(xiàn)單例設(shè)計(jì)模式方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之遞歸

    帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之遞歸

    這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之遞歸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • HashMap鏈表與紅黑樹轉(zhuǎn)換詳解

    HashMap鏈表與紅黑樹轉(zhuǎn)換詳解

    這篇文章主要介紹了HashMap鏈表與紅黑樹轉(zhuǎn)換詳解,HashMap是Java中的一種數(shù)據(jù)結(jié)構(gòu),它實(shí)現(xiàn)了Map接口,提供了鍵值對的存儲和檢索功能,它基于哈希表的原理,通過將鍵映射到哈希表中的位置來存儲和獲取值,從而實(shí)現(xiàn)了快速的查找和插入操作,需要的朋友可以參考下
    2023-11-11
  • Maven方式構(gòu)建SpringBoot項(xiàng)目的實(shí)現(xiàn)步驟(圖文)

    Maven方式構(gòu)建SpringBoot項(xiàng)目的實(shí)現(xiàn)步驟(圖文)

    Maven是一個(gè)強(qiáng)大的項(xiàng)目管理工具,可以幫助您輕松地構(gòu)建和管理Spring Boot應(yīng)用程序,本文主要介紹了Maven方式構(gòu)建SpringBoot項(xiàng)目的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • 關(guān)于Java中攔截mybatis并輸出完整sql語句的方法

    關(guān)于Java中攔截mybatis并輸出完整sql語句的方法

    這篇文章主要介紹了關(guān)于Java中攔截mybatis并輸出完整sql語句的方法,假如項(xiàng)目中有很多很多的SQL我們不可能一一的去修改解決。這個(gè)時(shí)候我們就需要通過mybatis攔截SQL并且最終修改SQL,需要的朋友可以參考下
    2023-08-08
  • Java中volatile關(guān)鍵字的線程的可見性、有序性詳解

    Java中volatile關(guān)鍵字的線程的可見性、有序性詳解

    這篇文章主要介紹了Java中volatile關(guān)鍵字的線程的可見性、有序性詳解,在juc多線程并發(fā)編程中,常常需要關(guān)注線程的"可見性"與"有序性",本文將詳細(xì)介紹這兩部分內(nèi)容,以及volatile關(guān)鍵字的使用,需要的朋友可以參考下
    2024-01-01
  • 輕松掌握J(rèn)ava適配器模式

    輕松掌握J(rèn)ava適配器模式

    這篇文章主要幫助大家輕松掌握J(rèn)ava適配器模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Spring Data Redis對象緩存序列化問題解決

    Spring Data Redis對象緩存序列化問題解決

    相信在項(xiàng)目中,你一定是經(jīng)常使用Redis,在使用時(shí),有沒有遇到同我一樣,對象緩存序列化問題的呢,本文主要介紹了Spring Data Redis對象緩存序列化問題解決,感興趣的可以了解一下
    2024-01-01
  • elasticsearch集群cluster?discovery可配式模塊示例分析

    elasticsearch集群cluster?discovery可配式模塊示例分析

    這篇文章主要為大家介紹了elasticsearch集群cluster?discovery可配式模塊示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04

最新評論

南部县| 阆中市| 枣庄市| 新昌县| 沧州市| 新和县| 武清区| 丹东市| 海林市| 廉江市| 甘谷县| 蓝山县| 贡山| 桓仁| 苗栗县| 米脂县| 河源市| 沾化县| 平乡县| 米林县| 伊川县| 巴楚县| 福贡县| 清水河县| 柘荣县| 英吉沙县| 罗江县| 吉安县| 南华县| 阿克陶县| 繁昌县| 武邑县| 邵阳市| 墨江| 柏乡县| 揭阳市| 葫芦岛市| 商河县| 台中市| 杭锦后旗| 平潭县|