1. 程式人生 > >Angular 6整合Spring Boot 2,Spring Security,JWT和CORS系列:二、Angualr專案連線heroapi專案的增刪改查介面

Angular 6整合Spring Boot 2,Spring Security,JWT和CORS系列:二、Angualr專案連線heroapi專案的增刪改查介面

Angular官方樣例Tour of Heroes通過angular-in-memory-web-api來模擬實現遠端呼叫對hero進行增刪改查,本節對其修改呼叫上一節實現的介面。

二、下載Angular官方樣例程式碼

三、安裝依賴包,在專案所在資料夾的控制檯(或cmd)中: npm install

四、關聯git: 

1、建立git創庫:   git init

2、關聯遠端創庫:git remote add origin https://gitee.com/lxhjh2015/heroes-web.git

3、拉取程式碼到本地:git pull origin master

4、本地新增:git add .

5、本地提交:git commit -am "第一次提交"

6、推送程式碼:git push

7、為了記錄本小節成果,建立本地分支: git checkout -b base

8、把本地分支上傳到遠端(遠端建立分支):git push origin base

9、切換回master分支:git checkout master

10、建立本節工作分支: git checkout -b first

11、把本節工作分支上傳到遠端: git push origin first

這樣本地和遠端,都分別有三個分支master、base、first

五、修改angular專案程式碼

angular專案程式碼,僅僅需要修改兩個地方即可。

第一個地方,修改介面地址,把hero.service.ts檔案中

private heroesUrl = 'api/heroes';

修改為

private heroesUrl = 'http://192.168.33.154:8001/api/heroes';

IP地址修改為你的電腦的ip

第二個地方,取消angular-in-memory-web-api啟動,把app.module.ts檔案中

HttpClientInMemoryWebApiModule.forRoot(
      InMemoryDataService, { dataEncapsulation: false }
    )

這三行程式碼註釋即可。

六、允許heroapi的cros跨域請求

angular專案程式碼修改之後,並不能立馬實現介面呼叫,通過瀏覽器開發者工具檢視網路請求,會發現“invalid cors request”。意思是springboot的cros專案存在跨域限制,我們要解決cros問題.

1、在pom.xml檔案中新增依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2、新增包com.jh.heroes.api.web.config

3、新增安全配置類WebSecurityConfig,程式碼為

package com.jh.heroes.api.web.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
	
	@Override
	protected void configure(HttpSecurity http) throws Exception {
		//關閉csrf,所有請求允許訪問
		http.cors().and().csrf().disable().authorizeRequests().anyRequest().permitAll();
	}
}

注:這個配置,關閉csrf,允許所有請求訪問,不做任何限制。

4、新增cros配置類CorsConfiguration,程式碼為

package com.jh.heroes.api.web.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfiguration implements WebMvcConfigurer {
	@Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }
}

注:

A、這個配置最大限度的允許訪問。

B、早期的springboot這個配置檔案繼承於WebMvcConfiugrationAdaper,現在WebMvcConfiugrationAdaper已經過期。在WebMvcConfiugrationAdaper檔案中做了說明,我們應該直接實現WebMvcConfigurer.

七、git程式碼提交

 經過對angular和springboot專案的簡單修改,它們可以跑起來了。

1、在angular專案的控制檯,進行如下操作

A、git commit -am "修改介面地址,專案啟動時不啟動HttpClientInMemoryWebApiModule"

B、推送程式碼:git push

C、 切換到master分支:git checkout master

D、 master分支合併first分支程式碼:git merge first

E、把master分支程式碼上傳到遠端:git push

F、建立新的工作分割槽: git checkout -b second

G、把本地分支上傳到遠端(遠端建立分支):git push origin second

2、在springboot專案的控制檯,進行如下操作

A、git add .

B、git commit -am "增加cros及security基礎配置"

C、推送程式碼:git push

D、 切換到master分支:git checkout master

E、 master分支合併first分支程式碼:git merge first

F、把master分支程式碼上傳到遠端:git push

G、建立新的工作分割槽: git checkout -b second

H、把本地分支上傳到遠端(遠端建立分支):git push origin second

八、小結

本節使angular官方專案連線到我們用springboot製作的介面,同時也解決了springboot專案的cros跨域的問題。

參考