2017-01-26 5 views
1

Мне нужно использовать API с настраиваемым методом HTTP-запроса.Угловой 2 метод пользовательских запросов

В моем случае метод HTTP-запроса «RELOAD».

В Угловое 2 у меня есть список методов запроса, доступных в (https://github.com/angular/angular/blob/master/modules/%40angular/http/src/enums.ts):

export enum RequestMethod { 
    Get, 
    Post, 
    Put, 
    Delete, 
    Options, 
    Head, 
    Patch 
} 

Если я:

return this.http.request(url, {method: "RELOAD"}) 
     .map(response => response.json()) 
     .catch(this.handleError); 

У меня есть эта ошибка:

ORIGINAL EXCEPTION: Invalid request method. The method "RELOAD" is not supported.

Как отправить HTTP-запрос с помощью метода пользовательских запросов?

ответ

1

вы можете расширить класс http следующим образом.

export class CustomHttp extends Http { 

    constructor(backend: XHRBackend, options: RequestOptions) { 
    super(backend, options); 
    } 

    get(url: string, options?: RequestOptionsArgs): Observable<Response> { 
    //Starts 
    return super.get(url, options).map(r => { 
     //Completed 
     return r; 
    }).catch(//error handling); 
    } 
} 

затем использовать этот класс вместо HTML в вашей службе, я надеюсь, что это помогает (вы можете сделать то же самое для запроса)

+0

Я уже продлил класс Http с настраиваемым запросом, но я должен использовать RequestOptions, что нужно приписать «метод» типа «RequestMethod». –

0

Вы можете сделать общий запрос с использованием NG2. используя нижеприведенный код

this.objHttp.request("url.svc",{ 
     method:"POST" 
    }).subscribe(data=>{ 

}); 

Но проблема в том, что браузер по умолчанию не поддерживает пользовательские методы. Не могли бы вы рассказать мне пример использования для использования метода пользовательских действий?

+0

Мне нужно использовать CUSTOM http method: мой метод id "RELOAD". objHttp.request нужен объект Request с типом метода RequestMethod –

+0

Браузеры поддерживают пользовательские методы! Я уже сделал такой http-запрос. Проблема в том, что угловой 2 имеет «перечисление» доступных методов запроса, а перечисление не распространяется на другие методы –

0

Я думаю, что нет способа использовать собственный метод. Пользовательские методы HTTP-запроса совместимы с RFC. От https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html:

The set of common methods for HTTP/1.1 is defined below. Although this set can be expanded, additional methods cannot be assumed to share the same semantics for separately extended clients and servers.

В угловом 2 не существует никакого способа, чтобы использовать специальный метод, так как объект RequestMethod является «перечисление» и не продолжается.

Я думаю, что я открою вопрос на угловом 2 GitHub

Смежные вопросы