2017-04-05 2 views
0

私は反応アプリケーションで作業しています。私はモジュールhttp-proxy-middlewareを使ってプロキシを設定しました。プロキシサーバーのAPIを呼び出すと、WebサイトのURLが追加されるのはなぜですか

フラグページでは、ウェブサイトURLは// localhost:9000/flags/allのようになります。

ユーザーがフラグページのボタンをクリックすると、sparkle(rest service)APIを呼び出して結果をロードする必要があります。私がスパークルAPIを呼び出すと、内部的にウェブサイトのURLも追加され、// SGD01D:10700/sparkle/flagsの代わりにhttp://SGD01D:10700/all/sparkle/flagsのようにapi呼び出しが形成されます。なぜ「すべて」がAPIコールに追加されているのですか?この問題の解決方法

//server 
app.use('/sparkle', proxy(proxies.sparkle_config())); 

//Proxy config 
class proxies { 
    static sparkle_config() { 
return { 
    target: 'http://SGD01D:10700', // target host 
    changeOrigin: true // needed for virtual hosted sites 
    }; 
} 
} 
export default proxies; 

    //React action 
    //redux-thunk 
    export function loadFlags() { 
     return function(dispatch) { 
     dispatch(beginAjaxCall()); 

     const promise = axios({url: 'sparkle/v1/api/flag', timeout: 20000, method: 'get', responseType: 'json'}); 
     promise.then(function(flags) {    
      dispatch(loadFlagsSuccess(flags)); 
     }).catch(function(error) { 
      throw(error); 
     }); 

     }; 
    } 
+0

'// localhostを:9000 /旗/ ALL'、輝き/ V1/API/flag''へのAjaxリクエストはリクエストになります私は絶対パスでAxiosとのAPIを呼び出します'// localhost:9000/flags/sparkle/v1/api/flag'に' app.use( '/ sparkle'、...) 'のヒットしません。ブラウザのDevToolを開いて確認できますか? – shaochuancs

+0

また、 'sparkle/v1/api/flag'へのリクエストは' .../v1/api/flag'のようなものにプロキシされます。 'sparkle/flags'に代理されることはまずありません。あなたのコードに何か不足していますか? – shaochuancs

+0

ご返信ありがとうございます。私の所見は以下の通りです。一度チェックしてください。 URL = http:// localhost:9000/flag/all、 APIは= 'sparkle/v1/api/flag'と呼ばれます。 開発ツールurl = http:// localhost:9000/flag/sparkle/v1/API /フラグ(404結果)、 であるべき=のhttp:// localhostを:9000 /輝き/ V1/API /フラグ、 つ以上の観察: 私のウェブサイトのURLは、httpのようなものである場合:// localhost:9000/flag/all/testing、 Devツールurl = http:// localhost:9000/flag/sparkle/all/v1/api/flag(結果は404) – Abhi

答えて

0

API呼び出しの相対パスが問題であると思われます。

フラグページ
const promise = axios({url: '/sparkle/v1/api/flag', timeout: 20000, method: 'get', responseType: 'json'}); 
関連する問題