雾里琴 發表於 2019-9-12 16:58:00

Angular http服务工具类

<p>Angular http服务工具类大致可以分为两个版本,一个是Angular4.3之前位于@angular/http下的Http服务,另一个是Angular4.3之后位于@angular/common/http下HttpClient服务。具体区别可查看https://www.cnblogs.com/54hsh/p/11490711.html</p>
<p>&nbsp;</p>
<p><strong>1、Angular4.3之前@angular/http下的Http服务工具类</strong></p>
<div style="color: rgba(248, 248, 242, 1); background-color: rgba(39, 40, 34, 1); font-family: Consolas, &quot;Courier New&quot;, monospace; line-height: 19px; white-space: pre">
<div><span style="color: rgba(249, 38, 114, 1)">import</span>&nbsp;{&nbsp;Injectable&nbsp;}&nbsp;<span style="color: rgba(249, 38, 114, 1)">from</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">"@angular/core"</span>;</div>
<div><span style="color: rgba(249, 38, 114, 1)">import</span>&nbsp;{&nbsp;Http,&nbsp;Response,&nbsp;RequestOptions,&nbsp;Headers&nbsp;}&nbsp;<span style="color: rgba(249, 38, 114, 1)">from</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">'@angular/http'</span>;</div>
<div><span style="color: rgba(249, 38, 114, 1)">import</span>&nbsp;{&nbsp;Observable&nbsp;}&nbsp;<span style="color: rgba(249, 38, 114, 1)">from</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">'rxjs/Observable'</span>;</div>
<div><span style="color: rgba(249, 38, 114, 1)">import</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">'rxjs/add/operator/catch'</span>;</div>
<div><span style="color: rgba(249, 38, 114, 1)">import</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">'rxjs/add/operator/map'</span>;</div>
<br>
<div><span style="color: rgba(102, 217, 239, 1); font-style: italic">const</span>&nbsp;options&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(249, 38, 114, 1)">new</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">RequestOptions</span>({</div>
<div>&nbsp;&nbsp;withCredentials:&nbsp;<span style="color: rgba(174, 129, 255, 1)">true</span>,</div>
<div>&nbsp;&nbsp;headers:&nbsp;<span style="color: rgba(249, 38, 114, 1)">new</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">Headers</span>({&nbsp;<span style="color: rgba(230, 219, 116, 1)">'X-Requested-With'</span>:&nbsp;<span style="color: rgba(230, 219, 116, 1)">'XMLHttpRequest'</span>&nbsp;})</div>
<div>});</div>
<br>
<div>@<span style="color: rgba(166, 226, 46, 1)">Injectable</span>()</div>
<div><span style="color: rgba(249, 38, 114, 1)">export</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">class</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">HttpUtil</span>&nbsp;{</div>
<div>&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">private</span>&nbsp;baseUrl<span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">any</span>;</div>
<div>&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">constructor</span>(<span style="color: rgba(249, 38, 114, 1)">private</span>&nbsp;<span style="color: rgba(253, 151, 31, 1); font-style: italic">http</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">Http</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.baseUrl&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">'http://localhost:8080'</span>;</div>
<div>&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;<span style="color: rgba(166, 226, 46, 1)">get</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">url</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">log</span>(<span style="color: rgba(230, 219, 116, 1)">'发送get请求,url:'</span>,&nbsp;url)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.baseUrl&nbsp;<span style="color: rgba(249, 38, 114, 1)">+</span>&nbsp;url;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.http.<span style="color: rgba(166, 226, 46, 1)">get</span>(url,&nbsp;options)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">map</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.extractData)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">catch</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.handleError);</div>
<div>&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;<span style="color: rgba(166, 226, 46, 1)">post</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">url</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>,&nbsp;<span style="color: rgba(253, 151, 31, 1); font-style: italic">params</span><span style="color: rgba(249, 38, 114, 1)">?:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">any</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">log</span>(<span style="color: rgba(230, 219, 116, 1)">'发送post请求,url:'</span>,&nbsp;url,&nbsp;<span style="color: rgba(230, 219, 116, 1)">',params:'</span>,&nbsp;params);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.baseUrl&nbsp;<span style="color: rgba(249, 38, 114, 1)">+</span>&nbsp;url;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.http.<span style="color: rgba(166, 226, 46, 1)">post</span>(url,&nbsp;params,&nbsp;options)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">map</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.extractData)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">catch</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.handleError);</div>
<div>&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;<span style="color: rgba(166, 226, 46, 1)">put</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">url</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>,&nbsp;<span style="color: rgba(253, 151, 31, 1); font-style: italic">params</span><span style="color: rgba(249, 38, 114, 1)">?:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">any</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">log</span>(<span style="color: rgba(230, 219, 116, 1)">'发送put请求,url:'</span>,&nbsp;url,&nbsp;<span style="color: rgba(230, 219, 116, 1)">',params:'</span>,&nbsp;params);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.baseUrl&nbsp;<span style="color: rgba(249, 38, 114, 1)">+</span>&nbsp;url;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.http.<span style="color: rgba(166, 226, 46, 1)">put</span>(url,&nbsp;params,&nbsp;options)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">map</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.extractData)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">catch</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.handleError);</div>
<div>&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;<span style="color: rgba(166, 226, 46, 1)">delete</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">url</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">log</span>(<span style="color: rgba(230, 219, 116, 1)">'发送delete请求,url:'</span>,&nbsp;url);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.baseUrl&nbsp;<span style="color: rgba(249, 38, 114, 1)">+</span>&nbsp;url;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.http.<span style="color: rgba(166, 226, 46, 1)">delete</span>(url,&nbsp;options)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">map</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.extractData)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">catch</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.handleError);</div>
<div>&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;<span style="color: rgba(166, 226, 46, 1)">postForm</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">url</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>,&nbsp;<span style="color: rgba(253, 151, 31, 1); font-style: italic">params</span><span style="color: rgba(249, 38, 114, 1)">?:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">any</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">let</span>&nbsp;formData<span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">FormData</span>&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(249, 38, 114, 1)">new</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">FormData</span>();</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;formData.<span style="color: rgba(166, 226, 46, 1)">append</span>(<span style="color: rgba(230, 219, 116, 1)">'username'</span>,&nbsp;params.username);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;formData.<span style="color: rgba(166, 226, 46, 1)">append</span>(<span style="color: rgba(230, 219, 116, 1)">'password'</span>,&nbsp;params.password);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.<span style="color: rgba(166, 226, 46, 1)">post</span>(url,&nbsp;formData);</div>
<div>&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">private</span>&nbsp;<span style="color: rgba(166, 226, 46, 1)">extractData</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">response</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">Response</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">log</span>(<span style="color: rgba(230, 219, 116, 1)">'提取数据:'</span>,&nbsp;response);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">let</span>&nbsp;body&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;response.<span style="color: rgba(166, 226, 46, 1)">json</span>();</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;body&nbsp;<span style="color: rgba(249, 38, 114, 1)">||</span>&nbsp;{};</div>
<div>&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">private</span>&nbsp;<span style="color: rgba(166, 226, 46, 1)">handleError</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">error</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">Response</span>&nbsp;<span style="color: rgba(249, 38, 114, 1)">|</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">any</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">let</span>&nbsp;errMsg<span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">if</span>&nbsp;(error&nbsp;<span style="color: rgba(249, 38, 114, 1)">instanceof</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">Response</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">const</span>&nbsp;body&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;error.<span style="color: rgba(166, 226, 46, 1)">json</span>()&nbsp;<span style="color: rgba(249, 38, 114, 1)">||</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">''</span>;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">const</span>&nbsp;err&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;body.error&nbsp;<span style="color: rgba(249, 38, 114, 1)">||</span>&nbsp;<span style="color: rgba(102, 217, 239, 1)">JSON</span>.<span style="color: rgba(102, 217, 239, 1)">stringify</span>(body);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errMsg&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">`</span><span style="color: rgba(249, 38, 114, 1)">${</span>error.status<span style="color: rgba(249, 38, 114, 1)">}</span><span style="color: rgba(230, 219, 116, 1)">&nbsp;-&nbsp;</span><span style="color: rgba(249, 38, 114, 1)">${</span>error.statusText&nbsp;<span style="color: rgba(249, 38, 114, 1)">||</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">''</span><span style="color: rgba(249, 38, 114, 1)">}</span><span style="color: rgba(230, 219, 116, 1)">&nbsp;</span><span style="color: rgba(249, 38, 114, 1)">${</span>err<span style="color: rgba(249, 38, 114, 1)">}</span><span style="color: rgba(230, 219, 116, 1)">`</span>;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: rgba(249, 38, 114, 1)">else</span>&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errMsg&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;error.message&nbsp;<span style="color: rgba(249, 38, 114, 1)">?</span>&nbsp;error.message&nbsp;<span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;error.<span style="color: rgba(166, 226, 46, 1)">toString</span>();</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">error</span>(<span style="color: rgba(230, 219, 116, 1)">'异常信息:'</span>,&nbsp;errMsg);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;Observable.<span style="color: rgba(166, 226, 46, 1)">throw</span>(errMsg);</div>
<div>&nbsp;&nbsp;}</div>
<br>
<div>}</div>

</div>
<p>&nbsp;</p>
<p><strong>2、<strong>Angular4.3之后</strong>@angular/common/http下的HttpClient服务工具类</strong><span style="background-color: rgba(39, 40, 34, 1); font-family: Consolas, &quot;Courier New&quot;, monospace; white-space: pre; color: rgba(249, 38, 114, 1)"><br></span></p>
<div style="color: rgba(248, 248, 242, 1); background-color: rgba(39, 40, 34, 1); font-family: Consolas, &quot;Courier New&quot;, monospace; line-height: 19px; white-space: pre">
<div><span style="color: rgba(249, 38, 114, 1)">import</span>&nbsp;{&nbsp;Injectable&nbsp;}&nbsp;<span style="color: rgba(249, 38, 114, 1)">from</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">"@angular/core"</span>;</div>
<div><span style="color: rgba(249, 38, 114, 1)">import</span>&nbsp;{&nbsp;HttpClient,&nbsp;HttpHeaders&nbsp;}&nbsp;<span style="color: rgba(249, 38, 114, 1)">from</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">'@angular/common/http'</span>;</div>
<div><span style="color: rgba(249, 38, 114, 1)">import</span>&nbsp;{&nbsp;Observable&nbsp;}&nbsp;<span style="color: rgba(249, 38, 114, 1)">from</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">'rxjs'</span>;</div>
<div><span style="color: rgba(249, 38, 114, 1)">import</span>&nbsp;{&nbsp;map,&nbsp;catchError&nbsp;}&nbsp;<span style="color: rgba(249, 38, 114, 1)">from</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">'rxjs/operators'</span>;</div>
<br>
<div><span style="color: rgba(102, 217, 239, 1); font-style: italic">const</span>&nbsp;options&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;headers:&nbsp;<span style="color: rgba(249, 38, 114, 1)">new</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">HttpHeaders</span>({<span style="color: rgba(230, 219, 116, 1)">'Content-Type'</span>:&nbsp;<span style="color: rgba(230, 219, 116, 1)">'application/json'</span>})</div>
<div>}</div>
<br>
<div>@<span style="color: rgba(166, 226, 46, 1)">Injectable</span>()</div>
<div><span style="color: rgba(249, 38, 114, 1)">export</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">class</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">HttpClientUtil</span>&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">private</span>&nbsp;baseUrl<span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">any</span>;</div>
<br>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">constructor</span>(<span style="color: rgba(249, 38, 114, 1)">private</span>&nbsp;<span style="color: rgba(253, 151, 31, 1); font-style: italic">httpClient</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">HttpClient</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.baseUrl&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">'http://localhost:8080'</span>;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">public</span>&nbsp;<span style="color: rgba(166, 226, 46, 1)">get</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">url</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">log</span>(<span style="color: rgba(230, 219, 116, 1)">'发送get请求,url:'</span>,&nbsp;url);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.baseUrl&nbsp;<span style="color: rgba(249, 38, 114, 1)">+</span>&nbsp;url;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.httpClient.<span style="color: rgba(166, 226, 46, 1)">get</span>(url,&nbsp;options)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">pipe</span>(<span style="color: rgba(166, 226, 46, 1)">map</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.extractData),&nbsp;<span style="color: rgba(166, 226, 46, 1)">catchError</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.handleError));</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">public</span>&nbsp;<span style="color: rgba(166, 226, 46, 1)">post</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">url</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>,&nbsp;<span style="color: rgba(253, 151, 31, 1); font-style: italic">params</span><span style="color: rgba(249, 38, 114, 1)">?:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">any</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">log</span>(<span style="color: rgba(230, 219, 116, 1)">'发送post请求,url:'</span>,&nbsp;url,&nbsp;<span style="color: rgba(230, 219, 116, 1)">',params:'</span>,&nbsp;params);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.baseUrl&nbsp;<span style="color: rgba(249, 38, 114, 1)">+</span>&nbsp;url;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.httpClient.<span style="color: rgba(166, 226, 46, 1)">post</span>(url,&nbsp;params,&nbsp;options)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">pipe</span>(<span style="color: rgba(166, 226, 46, 1)">map</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.extractData),&nbsp;<span style="color: rgba(166, 226, 46, 1)">catchError</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.handleError));</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">public</span>&nbsp;<span style="color: rgba(166, 226, 46, 1)">put</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">url</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>,&nbsp;<span style="color: rgba(253, 151, 31, 1); font-style: italic">params</span><span style="color: rgba(249, 38, 114, 1)">?:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">any</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">log</span>(<span style="color: rgba(230, 219, 116, 1)">'发送put请求,url:'</span>,&nbsp;url,&nbsp;<span style="color: rgba(230, 219, 116, 1)">',params:'</span>,&nbsp;params);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.baseUrl&nbsp;<span style="color: rgba(249, 38, 114, 1)">+</span>&nbsp;url;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.httpClient.<span style="color: rgba(166, 226, 46, 1)">put</span>(url,&nbsp;params,&nbsp;options)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">pipe</span>(<span style="color: rgba(166, 226, 46, 1)">map</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.extractData),&nbsp;<span style="color: rgba(166, 226, 46, 1)">catchError</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.handleError));</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">public</span>&nbsp;<span style="color: rgba(166, 226, 46, 1)">delete</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">url</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">log</span>(<span style="color: rgba(230, 219, 116, 1)">'发送delete请求,url:'</span>,&nbsp;url);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.baseUrl&nbsp;<span style="color: rgba(249, 38, 114, 1)">+</span>&nbsp;url;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.httpClient.<span style="color: rgba(166, 226, 46, 1)">delete</span>(url,&nbsp;options)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<span style="color: rgba(166, 226, 46, 1)">pipe</span>(<span style="color: rgba(166, 226, 46, 1)">map</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.extractData),&nbsp;<span style="color: rgba(166, 226, 46, 1)">catchError</span>(<span style="color: rgba(253, 151, 31, 1)">this</span>.handleError));</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(166, 226, 46, 1)">postForm</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">url</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>,&nbsp;<span style="color: rgba(253, 151, 31, 1); font-style: italic">params</span><span style="color: rgba(249, 38, 114, 1)">?:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">any</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">let</span>&nbsp;formData<span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">FormData</span>&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(249, 38, 114, 1)">new</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">FormData</span>();</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formData.<span style="color: rgba(166, 226, 46, 1)">append</span>(<span style="color: rgba(230, 219, 116, 1)">'username'</span>,&nbsp;params.username);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formData.<span style="color: rgba(166, 226, 46, 1)">append</span>(<span style="color: rgba(230, 219, 116, 1)">'password'</span>,&nbsp;params.password);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;<span style="color: rgba(253, 151, 31, 1)">this</span>.<span style="color: rgba(166, 226, 46, 1)">post</span>(url,&nbsp;formData);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">private</span>&nbsp;<span style="color: rgba(166, 226, 46, 1)">extractData</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">response</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">Response</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">log</span>(<span style="color: rgba(230, 219, 116, 1)">'提取数据:'</span>,&nbsp;response);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">let</span>&nbsp;data&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;response.<span style="color: rgba(166, 226, 46, 1)">json</span>();</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;data&nbsp;<span style="color: rgba(249, 38, 114, 1)">||</span>&nbsp;{};</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">private</span>&nbsp;<span style="color: rgba(166, 226, 46, 1)">handleError</span>(<span style="color: rgba(253, 151, 31, 1); font-style: italic">error</span><span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">Response</span>&nbsp;<span style="color: rgba(249, 38, 114, 1)">|</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">any</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">let</span>&nbsp;errMsg<span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">string</span>;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">if</span>&nbsp;(error&nbsp;<span style="color: rgba(249, 38, 114, 1)">instanceof</span>&nbsp;<span style="color: rgba(166, 226, 46, 1); text-decoration-line: underline">Response</span>)&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">const</span>&nbsp;data&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;error.<span style="color: rgba(166, 226, 46, 1)">json</span>()&nbsp;<span style="color: rgba(249, 38, 114, 1)">||</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">''</span>;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">const</span>&nbsp;err&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;data.toString&nbsp;<span style="color: rgba(249, 38, 114, 1)">||</span>&nbsp;<span style="color: rgba(102, 217, 239, 1)">JSON</span>.<span style="color: rgba(102, 217, 239, 1)">stringify</span>(data);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errMsg&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">`</span><span style="color: rgba(249, 38, 114, 1)">${</span>error.status<span style="color: rgba(249, 38, 114, 1)">}</span><span style="color: rgba(230, 219, 116, 1)">&nbsp;-&nbsp;</span><span style="color: rgba(249, 38, 114, 1)">${</span>error.statusText&nbsp;<span style="color: rgba(249, 38, 114, 1)">||</span>&nbsp;<span style="color: rgba(230, 219, 116, 1)">''</span><span style="color: rgba(249, 38, 114, 1)">}</span><span style="color: rgba(230, 219, 116, 1)">&nbsp;</span><span style="color: rgba(249, 38, 114, 1)">${</span>err<span style="color: rgba(249, 38, 114, 1)">}</span><span style="color: rgba(230, 219, 116, 1)">`</span>;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: rgba(249, 38, 114, 1)">else</span>&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errMsg&nbsp;<span style="color: rgba(249, 38, 114, 1)">=</span>&nbsp;error.message&nbsp;<span style="color: rgba(249, 38, 114, 1)">?</span>&nbsp;error.message&nbsp;<span style="color: rgba(249, 38, 114, 1)">:</span>&nbsp;error.<span style="color: rgba(166, 226, 46, 1)">toString</span>();</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(102, 217, 239, 1); font-style: italic">console</span>.<span style="color: rgba(102, 217, 239, 1)">error</span>(<span style="color: rgba(230, 219, 116, 1)">'异常处理:'</span>,&nbsp;errMsg);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgba(249, 38, 114, 1)">return</span>&nbsp;Observable.<span style="color: rgba(166, 226, 46, 1)">throw</span>(errMsg);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<div>}</div>

</div>

</div>
<div id="MySignature" role="contentinfo">
    &nbsp;&nbsp;&nbsp;&nbsp;千万不要试图去研究 研究了很久都整不明白的东西,或许是层次不到,境界未到,也或许是从未在实际的应用场景接触过,这种情况下去研究,只会事倍功半,徒劳一番罢了。能做的就是不断的沉淀知识,保持一颗积极向上的学习心态,相信终有一天所有的困难都会迎刃而解。<br><br>
来源:https://www.cnblogs.com/54hsh/p/11512818.html
頁: [1]
查看完整版本: Angular http服务工具类