我需要从我公司持有的另一个域中提取一些资源.我想用GET请求提取安全的HTML内容.
当用户退出应用程序时,所请求的内容将返回302到登录页面.
我试图嗅探302的标题并没有返回到目前为止我所希望的.我的Observable返回的响应是200(登录页面).
这是我的示例应用程序.
export class MenuComponent implements OnInit {
private _resourceUrl = "http://localhost:3001/resources/menu";
constructor(private _http: Http){
}
menu: string;
ngOnInit(): void {
this.getMenu()
.subscribe(
response => {
console.log(`Response status: ${response.status}`);
this.menu = response.text();
},
error => console.log(<any>error));
}
getMenu(): Observable<Response>{
return this._http.get(this._resourceUrl)
.map((response: Response) => response)
.catch(this.handleError);
}
private handleError(error: Response){
console.log(error);
return Observable.throw(error.json().error || 'Server Error');
}
}
Run Code Online (Sandbox Code Playgroud)
我是否走在正确的轨道上?
我正在对成功的REST API进行http.patch调用(状态200),但并未返回所有响应头的键/值.我对ETag键/值很感兴趣.
这是一段代码:
let etag:number = 0;
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('If-Match', String(etag));
this.http.patch(
'http://example.com:9002/api/myresource/',
JSON.stringify(dto),
{headers: headers}
)
.subscribe(
(response:Response) => {
let headers:Headers = response.headers;
let etag:String = headers.get('ETag');
console.log(etag);
}
);
Run Code Online (Sandbox Code Playgroud)
与REST客户端(邮递员)进行相同的调用时,响应头包含:
Content-Type: application/hal+json;charset=UTF-8
Date: Mon, 01 Feb 2016 05:21:09 GMT
ETag: "1"
Last-Modified: Mon, 01 Feb 2016 05:15:32 GMT
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
X-Application-Context: application:dev:9002
Run Code Online (Sandbox Code Playgroud)
丢失的响应标头键/值是否为错误?可以通过配置解决问题吗?
我有一个REST端点,它返回一个项目列表,一次最多1000个项目.如果有超过1000个项目,则响应具有HTTP状态206,并且Next-Range我可以在下一个请求中使用标题来获取更多项目.
我正在研究一个Angular 2应用程序并试图用Http和实现它Observable.我的问题是我不知道如何合并多个Observables取决于有多少页面的项目,最后返回Observable我的组件可以订阅的一个.
这是我使用当前TypeScript实现的地方:
// NOTE: Non-working example!
getAllItems(): Observable<any[]> {
// array of all items, possibly received with multiple requests
const allItems: any[] = [];
// inner function for getting a range of items
const getRange = (range?: string) => {
const headers: Headers = new Headers();
if (range) {
headers.set('Range', range);
}
return this.http.get('http://api/endpoint', { headers })
.map((res: Response) => {
// add …Run Code Online (Sandbox Code Playgroud) 我遇到了麻烦uploading multiple file to different urls using ng2-file-upload method.
我正在使用这个repo https://github.com/valor-software/ng2-file-upload
来实现这个目标.ng2-file-upload使用此演示轻松集成到我的应用程序中上传文件.此外,他们还提供了一种在特定网址上传多个文件的方法.
但我想上传different files at different url,我还没有找到.
// sample code
import { Component } from '@angular/core';
import { FileUploader } from 'ng2-file-upload';
const URL = '/api/some_url';
@Component({
selector: 'simple-demo',
templateUrl: './simple-demo.html'
})
export class SimpleDemoComponent {
public uploader:FileUploader = new FileUploader({url: URL}); // here to add url
}
Run Code Online (Sandbox Code Playgroud)
这FileUploader提供url了上传文件的方法.该方法的有用之处在于,progress-bar相关特征与该ng2-file-uploader组件集成在一起.我搜索了很多,但无法找到任何上传到不同网址的解决方案.
任何有用的建议将不胜感激!
我正在使用角度4,我尝试从2个端点获取数据,但我在理解rxjs时遇到问题.
使用此代码我只能获得学生和用户的列表.
getStudent() {
return this.http.get(this.url + this.student_url, this.getHeaders()).map(res => res.json());
}
getUsers() {
return this.http.get(this.url + this.users_url, this.getHeaders()).map(res => res.json());
}
Run Code Online (Sandbox Code Playgroud)
让我们说这是数据:学生
[{"ID" : 1 , "SchoolCode": "A150", "UserID": 1 },
{"ID" : 5 , "SchoolCode": "A140" , "UserID": 3},
{"ID" : 9 , "SchoolCode": "C140" , "UserID": 4}]
Run Code Online (Sandbox Code Playgroud)
用户
[{"ID" : 1 ,"Name": "Rick" , "FamilyName" , "Grimes" },
{"ID" : 4 ,"Name": "Carle" , "FamilyName" , "Grimes" }]
Run Code Online (Sandbox Code Playgroud)
我想先得到所有学生,然后比较UserID,如果它与用户相同,那么我将两个对象合并为一个,直到我得到这样的数组:
{"ID" : 1 , "SchoolCode": "A150","Name": "Rick" , …Run Code Online (Sandbox Code Playgroud) 我想从一个地方查看我的所有http响应.例如身份验证状态.如果响应说用户没有经过身份验证,我想重定向或其他什么.有没有办法做到这一点.
我正在尝试将一个角度2应用程序移植到RC5,但我遇到了一个问题:我无法通过模块正确设置应用程序.
有一个名为CustomersService的服务,它通过Http检索客户数据.我创建了一个导入HttpModule并提供CustomersService的应用程序模块.在另一个名为HomeModule的模块中,有一个使用该服务的组件.应用程序启动时,我在控制台上看到以下错误:
EXCEPTION: Error in ./HomeComponent class HomeComponent_Host - inline template:0:0
ORIGINAL EXCEPTION: No provider for Http!
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会这样......
任何建议将不胜感激.
谢谢.
这是文件:
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpModule } from '@angular/http';
import { MdSidenavModule } from '@angular2-material/sidenav';
import { MdListModule } from '@angular2-material/list';
import { MdIconModule } from '@angular2-material/icon';
import { MdToolbarModule } from '@angular2-material/toolbar';
import { MdButtonModule } from '@angular2-material/button';
import { AppComponent } from './app.component';
import { routing } …Run Code Online (Sandbox Code Playgroud) 我在Angular 2中调用了一个http帖子.这在post man中工作得很好但是当我在Angular 2中实现这个API调用时,我得到No'Access-Control-Allow'错误.这是我的代码
getInspections(): Observable<IInspection[]> {
if (!this.inspections) {
let body =JSON.stringify({"Statuses":["Submitted", "Opened"]});
let headers = new Headers({ 'Content-Type': 'application/json' });
headers.append('Access-Control-Allow-Origin','*');
let options = new RequestOptions({ headers: headers });
return this.http.post(this._baseUrl + '/api/Inspect/ListI',body,options)
.map((res: Response) => {
this.inspections = res.json();
return this.inspections;
})
.catch(this.handleError);
}
else {
//return cached data
return this.createObservable(this.inspections);
}
}
Run Code Online (Sandbox Code Playgroud)
或者我可以这样做吗?只需传递标题而不是选项
getInspections(): Observable<IInspection[]> {
if (!this.inspections) {
let body =JSON.stringify({"Statuses":["Submitted", "Opened"]});
let headers = new Headers({ 'Content-Type': 'application/json' });
//headers.append('Access-Control-Allow-Origin','*');
// let options = …Run Code Online (Sandbox Code Playgroud) 如何从角度2配置和发出https请求?找不到任何资源.可以请有人在这里指导我吗?谢谢.
this.http.put(url, data)
.map(response => response.json())
.subscribe(
response => console.log(response),
error => console.log(error),
);
Run Code Online (Sandbox Code Playgroud)
成功后,它会输出API返回的数据.出错时输出为ProgressEvent,状态为0.
angular2-http ×10
angular ×9
rxjs ×3
cors ×1
file-upload ×1
observable ×1
rest ×1
typescript ×1