日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

面向Java程序员的20大Spring REST面试问题答案

發(fā)布時(shí)間:2023/12/3 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向Java程序员的20大Spring REST面试问题答案 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大家好,過去兩周來,我一直在與Spring教程共享一些REST,今天,我將向申請(qǐng)Web開發(fā)人員角色的Java開發(fā)人員共享一些常見的Spring和REST面試問題。 由于Spring Framework是用于開發(fā)Java Web應(yīng)用程序和RESTful Web Services的最受歡迎的標(biāo)準(zhǔn)框架,因此,任何高級(jí)Java開發(fā)人員都應(yīng)該對(duì)Spring核心和Spring MVC有所了解,但是如果職位描述中提到了REST和Web Services,您還需要了解如何使用Spring Framework開發(fā)RESTful Web服務(wù)。 從Spring 3.1開始,該框架進(jìn)行了很多增強(qiáng),以支持RESTFul API即用型的許多功能,例如
通過僅檢測類路徑中的相關(guān)庫(例如Jackson和JAXB), HTTPMessageConverter可以將HTTP響應(yīng)轉(zhuǎn)換為JSON或XML 。

Spring還為RESTful Web服務(wù)提供了自定義的注釋,例如@ RestController ,它可以使Controller知道REST,因此您無需執(zhí)行每個(gè)REST API所需的常規(guī)工作,例如將響應(yīng)轉(zhuǎn)換為JSON。

在現(xiàn)實(shí)世界中,開發(fā)和保護(hù)RESTful Web服務(wù)也必須具備Spring Security的豐富知識(shí)。 由于沒有安全性就無法使生活成為一個(gè)平凡的REST API,因此對(duì)安全性基礎(chǔ)知識(shí)(例如HTTP基本身份驗(yàn)證 ,摘要身份驗(yàn)證,OAuth和JWT)的充分了解非常重要。

20 Spring REST Web服務(wù)面試問題

這是有關(guān)在Spring Framework中使用REST Web服務(wù)的幾個(gè)常見問題。

REST代表什么? (回答)

REST代表REpresentational State Transfer,它使用HTTP協(xié)議將數(shù)據(jù)從客戶端發(fā)送到服務(wù)器,例如,可以使用JSON或XML將服務(wù)器中的書交付給客戶端。

什么是資源? (回答)

資源是REST體系結(jié)構(gòu)中數(shù)據(jù)的表示方式。 通過將實(shí)體公開為資源,它允許客戶端使用HTTP方法(例如GET , POST ,
放入 ,刪除等

什么是安全的REST操作? (回答)

REST API使用HTTP方法執(zhí)行操作。 某些不會(huì)在服務(wù)器上修改資源的HTTP操作被稱為安全操作,例如GET和HEAD。 另一方面, PUT ,POST和DELETE是不安全的,因?yàn)樗鼈儠?huì)修改服務(wù)器上的資源。


什么是冪等運(yùn)算? 冪等為什么重要? ( 回答 )

無論您使用多少次,都有一些HTTP方法(例如GET)會(huì)產(chǎn)生相同的響應(yīng),例如,將多個(gè)GET請(qǐng)求發(fā)送到同一URI將導(dǎo)致相同的響應(yīng)而沒有任何副作用,因此被稱為等冪。

另一方面,POST不是冪等的,因?yàn)槿绻l(fā)送多個(gè)POST請(qǐng)求,它將導(dǎo)致服務(wù)器上創(chuàng)建多個(gè)資源,但是如果您使用它來更新資源,則PUT同樣是冪等的。

甚至,多個(gè)PUT請(qǐng)求更新服務(wù)器上的資源也會(huì)得到相同的最終結(jié)果。

REST是否可擴(kuò)展和/或可互操作? (回答)

是的,REST是可伸縮且可互操作的。 它沒有要求在客戶端或服務(wù)器端選擇特定的技術(shù)。 您可以使用Java,C ++,Python或JavaScript創(chuàng)建RESTful Web服務(wù)并在客戶端使用它們。 我建議您讀一本有關(guān)REST API的好書,例如RESTful Web服務(wù),以了解有關(guān)REST的更多信息。

RestTemplate的優(yōu)點(diǎn)是什么? ( 回答 )

RestTemplate類是Spring框架中Template方法模式的實(shí)現(xiàn)。 與其他流行的模板類(例如JdbcTemplate或JmsTempalte ,它還簡化了與客戶端RESTful Web服務(wù)的交互。 您可以使用它很容易地使用RESTful Web Servicer,如本示例所示。

REST使用哪種HTTP方法? ( 回答 )

REST可以使用任何HTTP方法,但是最受歡迎的方法是GET用于檢索資源,POST用于創(chuàng)建資源,PUt用于更新資源以及DELETE用于從服務(wù)器中刪除資源。

Spring REST中的HttpMessageConverter是什么? (回答)

HttpMessageConverter是一個(gè)Strategy接口 ,它指定可以在HTTP請(qǐng)求和響應(yīng)之間進(jìn)行轉(zhuǎn)換的轉(zhuǎn)換器。 Spring REST使用此接口將HTTP響應(yīng)轉(zhuǎn)換為各種格式,例如JSON或XML。

每個(gè)HttpMessageConverter實(shí)現(xiàn)都有一個(gè)或多個(gè)與之關(guān)聯(lián)的MIME類型。 Spring使用“ Accept”標(biāo)頭來確定客戶端期望的內(nèi)容類型。

然后它將嘗試查找已注冊(cè)的HTTPMessageConverter ,它能夠處理該特定的內(nèi)容類型,并使用它在將響應(yīng)發(fā)送到客戶端之前將其轉(zhuǎn)換為該格式。

如何創(chuàng)建HttpMessageConverter的自定義實(shí)現(xiàn)以支持新型的請(qǐng)求/響應(yīng)? (回答)

您只需要?jiǎng)?chuàng)建AbstractHttpMessageConverter的實(shí)現(xiàn),并使用WebMvcConfigurerAdapter#extendMessageConverters()方法將其注冊(cè),并生成新的請(qǐng)求/響應(yīng)類型。

REST通常是無狀態(tài)的嗎? ( 回答 )

是的,REST API應(yīng)該是無狀態(tài)的,因?yàn)樗谕瑯右彩菬o狀態(tài)的HTTP。 REST API中的請(qǐng)求應(yīng)包含其處理所需的所有詳細(xì)信息,即它不應(yīng)依賴于上一個(gè)或下一個(gè)請(qǐng)求或服務(wù)器端維護(hù)的某些數(shù)據(jù),例如會(huì)話。 REST規(guī)范對(duì)使其成為無狀態(tài)設(shè)置了約束,因此在設(shè)計(jì)REST API時(shí)應(yīng)牢記這一點(diǎn)。

@RequestMapping注釋有什么作用? ( 回答 )

@RequestMapping注釋用于將Web請(qǐng)求映射到Spring Controller方法。 您可以基于HTTP方法(例如GET和POST)以及其他各種參數(shù)來映射請(qǐng)求。 例如,如果您正在使用Spring開發(fā)RESTful Web Service,則可以使用Produces和consumers屬性以及媒體類型注釋來指示此方法僅用于產(chǎn)生或使用JSON,如下所示:

@RequestMapping (method = RequestMethod.POST, consumes="application/json") public Book save(@RequestBody Book aBook) {return bookRepository.save(aBook); }

您可以類似地創(chuàng)建其他處理程序方法以生成JSON或XML。

@Controller是構(gòu)造型嗎? @RestController是構(gòu)造型嗎? ( 回答 )

是的, @Controller @RestController和@RestController都是@RestController型。 @Controller實(shí)際上是Spring的@Component型注釋的一種特殊形式。 這意味著在容器的組件掃描過程中,Spring容器也會(huì)自動(dòng)檢測帶有@Controller注釋的類。

并且, @RestController是用于RESTful Web服務(wù)的@Controller的特殊化。 它不僅結(jié)合了@ResponseBody和@Controller注釋,而且還為您的控制器類賦予了更多含義,以清楚地表明它處理RESTful請(qǐng)求。

Spring框架也可以使用此注釋來提供一些將來與REST API開發(fā)相關(guān)的更有用的功能。

@Controller和@RestController什么@RestController ? ( 回答 )

正如我在較早的文章中所討論的, @Controller @RestControlle和@RestControlle r之間有很多區(qū)別(請(qǐng)參見答案),但是最重要的是,使用@RestController可以自動(dòng)獲得@ResponseBody批注,這意味著您無需單獨(dú)進(jìn)行批注。您的帶有@ResponseBody批注的處理程序方法。 這使得使用Spring可以更輕松地開發(fā)RESTful Web服務(wù)。 你可以看到這里學(xué)習(xí)

在Spring MVC中何時(shí)需要@ResponseBody注釋? ( 回答 )

可以在方法上放置@ResponseBody批注,以指示應(yīng)將返回類型直接寫到HTTP響應(yīng)主體(而不是放置在Model中或解釋為視圖名稱)。

例如:

@RequestMapping(path = "/hello", method = RequestMethod.PUT) @ResponseBody public String helloWorld() {return "Hello World"; }

另外,您也可以使用@RestController注釋代替@Controller注釋。 這將消除使用@ResponseBody的需要,因?yàn)槿缟弦粋€(gè)答案中所述,它自動(dòng)帶有@RestController批注。

Spring MVC中的@PathVariable有什么作用? 為什么在帶有Spring的REST中有用? ( 回答 )

這是Spring MVC的有用注釋之一,它使您可以從URI(如查詢參數(shù))讀取值。 在使用Spring創(chuàng)建RESTful Web服務(wù)的情況下,這特別有用,因?yàn)樵赗EST中,資源標(biāo)識(shí)符是URI的一部分。通常會(huì)向有經(jīng)驗(yàn)的Spring MVC開發(fā)人員(例如4至6年的經(jīng)驗(yàn))提出這個(gè)問題。

例如,如果要提取101 ID,則在URL http://myapp.com/books/101 ,可以使用Spring MVC的@PathVariable注釋。

成功的DELETE語句的HTTP狀態(tài)返回碼是什么? ( 回答 )

成功刪除后,REST API應(yīng)該返回什么狀態(tài)代碼沒有嚴(yán)格的規(guī)則,即它可以返回200 Ok或204 No Content。 通常,如果DELETE操作成功并且響應(yīng)主體為空,則返回204。如果DELETE請(qǐng)求成功并且響應(yīng)主體為非空,則返回200

CRUD是什么意思? (回答)

CRUD是“創(chuàng)建,讀取,更新和刪除”的縮寫。 在REST API中,POST用于創(chuàng)建資源,GET用于讀取資源,
PUT用于更新資源,而DELETE用于從服務(wù)器刪除資源。這是另一級(jí)初學(xué)者水平的Spring MVC問題,適用于1-3年的經(jīng)驗(yàn)豐富的程序員

您在哪里需要@EnableWebMVC? (回答)

當(dāng)使用Java配置而不是XML配置Spring MVC時(shí),需要@EnableWebMvc注釋才能啟用Spring MVC。 它等效<mvc: annotation-driven>in XML配置中的<mvc: annotation-driven>in 。

它支持使用@RequestMapping將傳入請(qǐng)求映射到處理程序方法的@RequestMapping @Controller-annotated類。

在Spring MVC中何時(shí)需要@ResponseStatus批注? ( 回答 )
一個(gè)3到5年經(jīng)驗(yàn)豐富的Spring開發(fā)人員的好問題。 在Spring MVC和REST中的錯(cuò)誤處理期間,需要@ResponseStatus批注。 通常,當(dāng)在服務(wù)器端引發(fā)錯(cuò)誤或異常時(shí),Web服務(wù)器將返回一攬子HTTP狀態(tài)代碼500 –內(nèi)部服務(wù)器錯(cuò)誤。

這可能適用于人類用戶,但不適用于REST客戶端。 如果找不到資源,則需要向他們發(fā)送正確的狀態(tài)代碼,例如404。 在這里可以使用@ResponseStatus批注,該批注允許您發(fā)送自定義HTTP狀態(tài)代碼以及異常情況下的正確錯(cuò)誤消息。

為了使用它,您可以創(chuàng)建自定義異常并使用@ResponseStatus批注以及正確的HTTP狀態(tài)代碼和原因?qū)ζ溥M(jìn)行批注。

當(dāng)從控制器的處理程序方法中拋出此類異常而未在其他任何地方處理此類異常時(shí),帶有已設(shè)置的正確HTTP狀態(tài)代碼的適當(dāng)HTTP響應(yīng)將發(fā)送到客戶端。

例如,如果您正在為提供書籍信息的庫編寫RESTful Web服務(wù),則可以使用@ResponseStatus創(chuàng)建異常,當(dāng)找不到書籍而不是內(nèi)部服務(wù)器錯(cuò)誤(500)時(shí),該異常返回HTTP響應(yīng)代碼404,如圖所示下面:

@ResponseStatus(value=HttpStatus.NOT_FOUND, reason="No such Book") // 404public class BookNotFoundException extends RuntimeException {// ...}

如果從任何處理程序方法引發(fā)此異常,則將以“ No such Book”為原因的HTTP錯(cuò)誤代碼404返回給客戶端。

REST安全嗎? 您可以采取什么措施來保護(hù)它? ( 回答 )

這個(gè)問題通常是由經(jīng)驗(yàn)豐富的Java程序員提出的,例如2至5年的REST和Spring經(jīng)驗(yàn)。 安全性是一個(gè)廣義的術(shù)語,它可能意味著通過加密或使用身份驗(yàn)證和授權(quán)提供的訪問限制來提供消息的安全性。 REST通常并不安全,但是您可以使用Spring安全性來保護(hù)它。

至少您可以通過在Spring安全配置文件中使用HTTP來啟用HTTP基本認(rèn)證。 同樣,如果基礎(chǔ)服務(wù)器支持HTTPS,則可以使用HTTPS公開REST API。

REST是否可以與傳輸層安全性(TLS)一起使用? ( 回答 )

TLS或傳輸層安全性用于客戶端和服務(wù)器之間的安全通信。 它是SSL(安全套接字層)的后繼者。 由于HTTPS可以同時(shí)使用SSL和TLS,因此REST也可以使用TLS。

實(shí)際上,REST談到了有關(guān)安全性的所有內(nèi)容,這取決于實(shí)現(xiàn)該要求的服務(wù)器。 如果服務(wù)器支持SSL,則可以使用HTTP和HTTPS訪問相同的RESTful Web服務(wù)。

如果您使用的是Tomcat,則可以在此處查看更多有關(guān)如何在Tomcat中啟用SSL的信息。

您是否需要在類路徑中使用Spring MVC來開發(fā)RESTful Web服務(wù)? ( 回答 )

經(jīng)常向在Spring擁有1到2年經(jīng)驗(yàn)的Java程序員提出這個(gè)問題。 簡短的答案是,您需要Java應(yīng)用程序的類路徑中的Spring MVC才能使用Spring框架開發(fā)RESTful Web服務(wù)。 它實(shí)際上是Spring MVC中提供所有有用的注解如@RestController , @ResponseCode , @ResponseBody , @RequestBody和@PathVariable ,因此必須用彈簧mvc.jar或在你的pom.xml適當(dāng)?shù)腗aven項(xiàng)

這就是針對(duì)初學(xué)者和經(jīng)驗(yàn)豐富的Java JEE開發(fā)人員的一些常見的Spring REST Interview問題 。 如果您要獲得Spring認(rèn)證,這些問題對(duì)于提高您對(duì)Spring REST的知識(shí)也非常有用。 如果您從Spring認(rèn)證的角度需要更多問題,可以在David Mayer的Core Spring Simulator上找到有關(guān)此主題的很多問題,它是目前通過Spring認(rèn)證的最佳模擬器之一。

您可能喜歡的其他Spring教程和資源

  • 5個(gè)免費(fèi)課程,用于學(xué)習(xí)Core Spring和Spring Boot
  • Spring MVC框架如何工作?
  • Spring Security中的基本身份驗(yàn)證如何工作?
  • Spring中DispatcherServlet的作用是什么?
  • Spring中@ Service,@ Controller和@Component之間有什么區(qū)別
  • Baeldung的REST with Spring認(rèn)證課程

感謝您閱讀本文,如果您喜歡本文,請(qǐng)與您的朋友和同事分享。 如果您有任何未在此列表中回答的問題,請(qǐng)發(fā)表評(píng)論,我會(huì)盡力為您找到答案。

翻譯自: https://www.javacodegeeks.com/2018/02/top-20-spring-rest-interview-questions-answers-java-programmers.html

總結(jié)

以上是生活随笔為你收集整理的面向Java程序员的20大Spring REST面试问题答案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。