angular - Angular HttpParams 与字符串 URL
问题描述
我想了解更多关于 HttpParams 的信息。我的 Angular 应用程序中有一个简单的数据服务,它有 2 个功能 - getWithHttpParams、getWithURLParams。
@Injectable({
providedIn: "root"
})
export class DataService2 {
constructor(private http: HttpClient) { }
getWithHttpParams(apiUrl:string, ID: string) {
const reqParams = new HttpParams().set('ID', ID);
return this.http.get(Configuration.apiPath + apiUrl, {params: reqParams}).pipe(
map((res: any) => {
return res;
})
);
}
getWithURLParams(apiUrl:string, ID: string) {
return this.http.get(Configuration.apiPath + apiUrl + "?ID=" + ID).pipe(
map((res: any) => {
return res;
})
);
}
}
我正在编写一个单元测试来测试这个服务。
it('should make a GET request with HttpParams', () => {
service.getWithHttpParams('test', '123').subscribe(data => {
expect(data).toEqual('test data');
});
const req = httpTestingController.expectOne(Configuration.apiPath + 'test?ID=123')
expect(req.request.method).toEqual('GET');
expect(req.request.params.get('ID')).toEqual('123');
req.flush('test data');
});
it('should make a GET request with URL Params', () => {
service.getWithURLParams('test', '123').subscribe(data => {
expect(data).toEqual('test data');
});
const req = httpTestingController.expectOne(Configuration.apiPath + 'test?ID=123')
expect(req.request.method).toEqual('GET');
expect(req.request.params.get('ID')).toEqual('123');
req.flush('test data');
});
因此,使用 getWithHttpParams 的第一个测试通过但使用 getWithURLParams 的第二个测试失败。这是什么原因?
解决方案
推荐阅读
- python - 使用 SQLAlchemy 基于所有权或组成员身份的声明性关系表示
- amazon-dynamodb - 如何使用 DocumentClient.get 在 Amazons DynamoDB 中按非主键属性查询表
- python - 是否可以使用 Python 中的一个 .append 语句将多个单独的元素添加到列表中?
- google-analytics - 跟踪 Google Analytics 增强型电子商务的结帐步骤
- postgresql - 为什么 psql 在尝试使用 pgbouncer 连接时要求输入密码
- facebook-messenger - 在 javascript 中打开带有来自 url 的欢迎消息的 fb messenger
- twitter-bootstrap - Bootstrap 4表单列在一行中的另一列下方排列
- angular - Angular 5 应用程序适用于 prod 构建,但不适用于 dev 构建
- python - DataJoint for Python 中正确的 ORDER BY 语法是什么?
- python - python -m 的 Bash 路径选项卡完成