image.png
其中我們配置了JSONconvert轉(zhuǎn)換器 使我們的輸出和響應(yīng)支持我門的JSON格式(在Spring全局配置中設(shè)置)
假如我們用java想要做rest api 如果像之前那樣做是不是很麻煩
下面我們學(xué)習(xí)簡單的方法
image.png
其實(shí)只要一個@RestController 注解就夠了
下面我們先看下官網(wǎng) 打開網(wǎng)站搜索@REST就可以找到如下
image.png
說明了這個注解是個組合的注解 把@Responsebody和@Controller兩個注解組合了
下面我們在controllers包下面創(chuàng)建個UsesController控制器(用戶控制器)
目錄如下
image.png
在里面打入@RestController就可以了(說明是一個rest控制器)
并打入注解@RequestMapping("users")代表我們訪問的地址
接下來我們在entities包下面創(chuàng)建個UserInfo實(shí)體類
里面包含userid和username字段
生成構(gòu)造函數(shù) 和get set方法
如下
image.png
image.png
下面回到UsersController控制器
image.png
發(fā)布下代碼
用瀏覽器訪問localhost:8080/users/123
image.png
使用Spring MVC開發(fā)api還是很方便的
下面我們再來寫個用戶列表api
在UsersController中加入如下
image.png
重新發(fā)布下代碼
瀏覽器訪問localhost:8080/users/list
image.png
下面看下這段內(nèi)容
image.png
既然談到了rest api的開發(fā) 那么肯定存在跨域的問題
下面我隨便做個網(wǎng)站(是以php方式運(yùn)行的 端口是8999)
接下來創(chuàng)建個test.html
盤符目錄如下
image.png
使用標(biāo)準(zhǔn)的Fetch API對上面的url進(jìn)行ajax請求
下面看下test.html代碼
如果我們要使用前端的方式訪問后端的api
http://localhost:8080/users/123這個就是我們后端api地址
如果要做前后端分離網(wǎng)站 那么前端肯定是使用ajax方式對后端進(jìn)行請求 求情的時候可能會放入一些參數(shù)(這個時候可能就會碰到跨域的問題 因?yàn)槲覀兊木W(wǎng)站可能部署在不同的域名)
我在本地啟動了8999端口的網(wǎng)站 并放入test.html
下面我們寫段標(biāo)準(zhǔn)的ajax代碼(不使用jquery使用html5帶的fetch api)
顯示當(dāng)前用戶的具體值
代碼如下
image.png
然后我用瀏覽器訪問下這個頁面localhost:8999/test.html
結(jié)果如下
image.png
出現(xiàn)了CORS跨域請求錯誤
我們?nèi)绻朐诤蠖嗽O(shè)置跨域請求 需要設(shè)置頭信息
所以需要在后端中設(shè)置頭的來源
下面改下java代碼
在UsersController中
image.png
我們在用戶id這個api中加入了跨域請求設(shè)置
重新發(fā)布代碼
再次訪問http://localhost:8999/test.html
結(jié)果如下
image.png
和我們api中返回的值相同
image.png
這種跨域請求方式是通過HttpServletResponse加入請求頭的方式 不是很方便
下面我們看下第二種方式跨域請求(加入注解的方式@CrossOrigin)可以在官網(wǎng)中搜索
可以在類的某個方法中對其進(jìn)行跨域設(shè)置
image.png
下面我們代碼演示下
image.png
重新發(fā)布下代碼
再次訪問http://localhost:8999/test.html
image.png
發(fā)現(xiàn)正常的彈出了用戶名
下面我們把test.html中改成POST方式請求
代碼如下
image.png
再次訪問http://localhost:8999/test.html
image.png
是因?yàn)槲覀僓sersController中使用的是@GetMapping
下面改為@PostMapping
image.png
再次發(fā)布代碼
運(yùn)行http://localhost:8999/test.html
image.png
表示我們請求成功了
下面我們看下第三種設(shè)置跨域方法(全局設(shè)置)有兩種方式(一,xml配置二逢艘,WebConfig方式)
如果我們在每個Controller或者方法里面都要打上注解的話哨颂,還不是很方便
image.png
來到spring官網(wǎng) 全局搜索mvc:cors
可以看見下面一段配置
image.png
可以在我們的xml文件寫上配置
下面我們演示下xml方式
打開context-spring.xml
加入如下
<mvc:cors>
<!--/** 表示users下面的所有都可以訪問-->
<mvc:mapping path="/users/**"
allowed-origins="http://localhost:8999"
allowed-methods="GET, POST"
/>
<mvc:mapping path="/resources/**"
allowed-origins="http://domain1.com" />
</mvc:cors>
在UsersController中注釋掉@CrossOrigin注解
image.png
再次發(fā)布代碼
運(yùn)行http://localhost:8999/test.html
結(jié)果
image.png
可以看見依然能夠正常顯示
以上就是三種設(shè)置后端跨域請求的方式 更多內(nèi)容查看我們的官網(wǎng)