rxjs 5.5でredux-observableを使用していて、ノードエクスプレスサーバに基本的なajax POSTリクエストを作成しようとしています。RXJS5でObservable.ajax.postリクエストを正しく作成するには
Observable.ajaxの関連ドキュメントや最新の作業例は見つかりません。提供されているどのような解決策は、実際のAPIに従って正しい署名であることを見せかけにもかかわらず、いくつかのエラーをスローするように見える
使用して私の現在のコードスニペット(Reduxの-観測可能にし、5.5 rxjs:以下のとおりである:
const loginEpic = (actions) => {
const opts = credentials => {
const { username, password } = credentials;
return {
url: 'http://localhost:3001/login',
body:{ username, password },
headers: { 'Content-Type': 'application/json; charset=utf-8' },
};
};
return actions.ofType(ActionTypes.LOGIN_REQUESTED)
.switchMap(({credentials}) => {
const { url, body, headers } = opts(credentials)
return Observable.ajax.post(url, body, headers)
.map(loginResponse =>
loginResponse.status===200
? loginResolvedAction(loginResponse.response)
: loginFailedAction(loginResponse.response))})
}
最初の問題は、crossDomain
プロパティをtrueに設定したいということです。デフォルトはfalseですが、そのような場所は存在しないようです設定するプロパティ(Chrome Devツールに表示されているにもかかわらず)
ここにエラーがあります:
Failed to load http://localhost:3001/login: Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers in preflight response.
私は、URLがポストにヒットしたときに、単に基本的なJSONオブジェクトを返しますバックエンドで簡単なExpressサーバを使用しています。ただし、このエンドポイントは上記の現在のObservable.ajax.postリクエストではヒットしません。
CORSを許可するChromeプラグインがあり、Axiosなどの他のライブラリを使用しているようです。しかし、私はObservablesを使うのが好きで、redux-observableとrxjsは偉大なライブラリであり、著者には名誉ですが、ajaxの問題の一番下には入りません。誰も助けることができますか?
約束でredux-observableを使うことができますが、['Observable.fromPromise'](http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html)を使って約束をオブザーバブルに変換するだけです。 #static-method-fromPromise) –