クライアントがファイルをアップロードし、サーバー関数を使用してファイルを解析できるようにする Go を使用してサーバーを作成しています。現在、私は 2 つの別々の要求を使用しています。1) 最初の要求は、ユーザーがアップロードしたファイルを送信します。2) 2 番目の要求は、サーバーがファイルを解析するために必要なパラメーターをサーバーに送信します。
ただし、プログラムの性質上、複数のユーザーが同時にサーバーを使用しようとすると、同時実行性の問題が発生する可能性があることに気付きました。それに対する私の解決策は、ミューテックスロックを使用することでした。ただし、ファイルを受信し、応答を送信してからパラメーターを受信しています。ミューテックスがロックされていると、Go が応答を返すことができないようです。ファイルとパラメータの両方を 1 つの HTTP リクエストで送信することで、この問題を解決することを考えています。それを行う方法はありますか?ありがとう
サンプルコード (関連部分のみ):
クライアントからファイルを送信するコード:
handleUpload() {
const data = new FormData()
for(var x = 0; x < this.state.selectedFile.length; x++) {
data.append('myFile', this.state.selectedFile[x])
}
var self = this;
let url = *the appropriate url*
axios.post(url, data, {})
.then(res => {
//other logic
self.handleParser();
})
}
handleParser() のコード:
handleNessusParser(){
let parserParameter = {
SourcePath : location,
ProjectName : this.state.projectName
}
// fetch the the response from the server
let self = this;
let url = *url*
fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(parserParameter),
}).then( (response) => {
if(response.status === 200) {
//success logic
}
}).catch (function (error) {
console.log("error: ", error);
});
}