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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

java spring mvc api_SpringMVC实现REST API

發(fā)布時(shí)間:2025/3/15 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java spring mvc api_SpringMVC实现REST API 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JSON

使用Jackson jar包、@RequestBody、@ResponseBody注解,達(dá)到:

1. 請(qǐng)求JSON消息體映射為JAVA對(duì)象

2. 返回JAVA對(duì)象映射為JSON消息體

Step 1. 導(dǎo)入Jackson jar包:

Step 2. 在Spring MVC配置中加入annotation-driven,該配置可以確保@RequestBody、@ResponseBody、@Valid(用于請(qǐng)求校驗(yàn))注解可以被解析生效:

Step 3. 配置控制器掃描路徑:

Step 3. 此時(shí)編寫Controller,使用@RequestBody、@ResponseBody注解:

請(qǐng)求校驗(yàn)

請(qǐng)求校驗(yàn)一般包含兩個(gè)方面的校驗(yàn):

1. 請(qǐng)求參數(shù)的合法性校驗(yàn),例如格式校驗(yàn)

該類校驗(yàn)可通過(guò)在類定義時(shí)使用JSR 303進(jìn)行數(shù)據(jù)校驗(yàn),可使用Hibernate Validator,當(dāng)數(shù)據(jù)校驗(yàn)有問(wèn)題時(shí),將會(huì)拋出org.springframework.web.bind.MethodArgumentNotValidException。

2. 業(yè)務(wù)邏輯校驗(yàn),例如系統(tǒng)規(guī)定網(wǎng)上店鋪不可重名

該類校驗(yàn),一般通過(guò)定制業(yè)務(wù)規(guī)則校驗(yàn)代碼實(shí)現(xiàn),可拋出自定義異常。

Step 1. 導(dǎo)入Hibernate Validator jar包:

Step 2. 在REST API交互使用到的類定義中使用JSR 303數(shù)據(jù)校驗(yàn)注解,例如:

HTTP Status Code

1. 在Controller的目標(biāo)方法上通過(guò)@ResponseStatus定義成功碼,例如需要PUT方法成功時(shí)返回204而不是200:

2. 對(duì)于通過(guò)定制的業(yè)務(wù)邏輯校驗(yàn)拋出自定義異常的場(chǎng)景,可以在自定義異常類上加上@ResponseStatus定義Status Code,例如:

3. 對(duì)于JSR 303進(jìn)行的數(shù)據(jù)校驗(yàn),返回的是400 Bad Request異常,這個(gè)一般無(wú)需額外定制。

4. 由于本例中要實(shí)現(xiàn):

當(dāng)異常出現(xiàn)時(shí),需要返回具體的錯(cuò)誤提示信息給客戶端(見(jiàn)“自定義錯(cuò)誤”章節(jié)),實(shí)際上異常發(fā)生時(shí)返回的HTTP Status Code也是在該章節(jié)的自定義ExceptionHandler類中指定的。

自定義錯(cuò)誤

由于HTTP Status Code只能給出一個(gè)籠統(tǒng)的錯(cuò)誤提示,往往在實(shí)際項(xiàng)目中,當(dāng)錯(cuò)誤發(fā)生時(shí),需要根據(jù)不同的錯(cuò)誤返回不同的錯(cuò)誤信息,一般包含錯(cuò)誤碼和錯(cuò)誤描述。

對(duì)于業(yè)務(wù)規(guī)則校驗(yàn)拋出的自定義異常和JSR 303拋出的MethodArgumentNotValidException,可以定制ExceptionHandler類來(lái)進(jìn)行處理,在其中直接返回自定義的ErrorInfo對(duì)象或者通過(guò)返回Map的方式實(shí)現(xiàn):

在上例中,在對(duì)應(yīng)的方法上也加上了@ResponseStatus指定了返回的HTTP Status Code,實(shí)際上自定義異常類中使用@ResponseStatus注解標(biāo)識(shí)的HTTP Status Code和JSR 303數(shù)據(jù)校驗(yàn)未通過(guò)時(shí)設(shè)定的HTTP Status Code,都會(huì)在此處被覆蓋,如果在此處不設(shè)置@Response Status,很不幸將會(huì)默認(rèn)返回表示正確的HTTP Status Code,例如200。

總結(jié)

以上是生活随笔為你收集整理的java spring mvc api_SpringMVC实现REST API的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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