2017-04-23 2 views
0

http native plugin을 사용하여 ionic 2 앱에서 HTTP put 요청을 보내려고하지만, 의사가 보낸 메시지에서 postget 요청 방법 만 구현되는 것을 볼 수 있습니다. 먼저ionic2 native http 플러그인을 사용하여 HTTP PUT 요청을 보내는 방법은 무엇입니까?

: 내가 HTTP 메소드 deleteput 실제로 구현되지 않은 경우 (필자는 문서에 적절한 장소에보고되지 않을 수 있습니다로) 알고 싶습니다.

두 번째 : 이들이 구현되지 않은 경우 이온 2 앱에서 putdelete을 어떻게 생성 할 수 있습니까? 저수준에서 플러그인 네이티브/라이브러리 코드를 수정하지 않아도 가능합니까?

미리 감사드립니다.

업데이트 1 : 그러나 2016년 9월에서 지금 2017년 4월은 마스터와 병합되지 될 때까지, put, deletepostJSON 구현 (https://github.com/wymsee/cordova-HTTP/pull/105)에 대한 풀 (pull) 요청이 있습니다.

업데이트 2 : 먼저 @Jamil Hijjawi에게 감사의 말을 전합니다. 그것은 그 문제를 해결했습니다. 하지만 CORS를 해결하기 위해 솔루션 2에 서버 구성이 필요하다는 점을 말씀 드리고자합니다. 그래서 첫 번째 옵션을 선택했습니다. 또한 "이오 네이티브 (Ionic Native)"코드가 아닌 플러그 - 인을 사용하는 방법을 설명하는 멋진 기사 https://www.joshmorony.com/using-cordova-plugins-in-ionic-2-with-ionic-native/이 있습니다.

이오닉 2에서 비 이온 네이티브 플러그인을 사용하는 방법은 모든 코르도바 프로젝트에서 사용하는 방법과 동일하지만 다음과 같은 단점을 지적하고 싶습니다. 플러그인의 설명서에 사용해야한다고 나와 있습니다. 그러나 TypeScript로 인해 몇 가지 문제가 발생하기 때문에 몇 가지 추가 단계가 필요합니다.

은 더 나아가 우리가 declarations.d.ts 그렇게 타이프 라이터가 알고있는 곳과 같은에서 플러그인에 의해 전 세계적으로 수출 변수 cordovaHTTP를 선언 할 필요가 있음을 설명한다. 일단 선언되면 의존성 삽입이 필요하지 않습니다. 다음은 임의의 구성 요소 기능에서 사용한 코드 단편입니다.

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html' 
}) 
export class HomePage { 

    constructor(
    public navCtrl: NavController, 
    private _platform: Platform 
) { 
    this._platform.ready().then(() => { 

     // ========== We need this part 
     cordovaHTTP.put('http://192.168.0.5:8081/test-route', { 
     really: "Yea!" 
     }, {}, (res: any) => { 
     console.log(res); 
     }, (err: any) => { 
     console.log(err); 
     }); 
     // ========== till here, as for the example of usage 
    }); 
    } 

} 

답변

1

옵션 1 :이 명령 ionic plugin add https://github.com/spuentesp/cordova-HTTP을 사용하여 풀 요청 REPO https://github.com/spuentesp/cordova-HTTP을 만든 저자로부터 직접 플러그인을 설치 PUT을 사용하려면, 그래서 cordova-http 플러그인 만, GETPOST 지원

하지만이 API에 대한 구현 된 선언은 ionic-native에서 제공되지 않으므로 012에 cordovaHTTP 네임 스페이스를 선언 할 수 있습니다.하고 원하는 API를 사용

옵션 2 :

사용에 Http 서비스 각도

this.http.put(url, JSON.stringify(hero), {headers: headers}).map(res => res.json()); 

의 HTTP 클래스 문서 https://angular.io/docs/ts/latest/api/http/index/Http-class.html

+0

이 응답 해 주셔서 감사합니다,하지만 난 데 선언 부분에 문제가 있습니다. declarations.d.ts에 cordovaHTTP 네임 스페이스를 선언하는 방법? 몇 가지 코드 스 니펫을 추가 할 수 있습니까? – Musa

+1

당신은 환영합니다.'declare var cordovaHTTP : any;'를'declarations.d.ts'에 추가하십시오. –

+0

나는 똑같이하고 있습니다.하지만 HTTP가 정의되어 있지 않습니다. 내가 정의 파일에 몇 가지 JS 파일을 링크해야 할 것 같아요, 그러나 – Musa

관련 문제