44日目(02-08-2021)


今日のsprintは前回やったChetterBoxを直接実現するサーバです.ただし、テスト要件に従って実施すると、ChetterBoxクライアントとの接続はできません.まず目標はテストに合格することです.要求により最初のCommon JSを使用するモジュールです.出口ですが、問題なく通過できました.2つ目は7つの詳細な条件で、内容はです.
パスしましたが、理解できない点もあるので、私が作ったコードには間違いないと思います.通過の過程を説明するなら.
要求されたエンドポイントが「/messages」であり、要求方法が「GET」である場合、サーバ内のデータに格納された最近位置付けされたデータがサーバに送信され、エンドポイントが「/messages」であり、要求方法が「POST」である場合に受信されたデータがサーバ内のデータに格納される.一方、else処理後に存在しないエンドポイントの応答は404である.
よく考えましたが、迷いました・・・これは、データを受信するときにどのような形式で来るのか、どのようにデータが来るのか分からないからです.そこで前回のスプレーを参考に、一つ一つ解いてみました.まずPOSTを実施すべきだと思い、実施しました.
if (url === '/messages' && method === 'POST') {
    response.writeHead(201, headers);
    request.on('data', (chunk) => {
      DATA.push(JSON.parse(chunk.toString()));
    }).on('end', () => {
      response.end(JSON.stringify(DATA));
    })
  }
私のコードの一部です.まず、DATAという空の配列変数を宣言し、受信したデータを格納します.最初は、そこに入ったブロックの形態が疑問で、console.ロゴでわかります.
バッファ形式で送信されます.tosrting()を使用してbufferを解放します.
DATA配列に直接入り、1つずつ保存します.
車の応答を確認します.end()に格納されているデータを見せ、postmanで確認した結果、保存が良好であることを示した.
では今GETリクエストに答えればいいのですがここはちょっと精神的に崩れています
if (url === '/messages' && method === 'GET') {
    response.writeHead(200, headers);
    let body = {results: []}; // 테스트를 통과하기 위해 result를 속성으로 가지고 있는 객체를 만들었다.
    request.on('data', () => {}).on('end', () => { // 의문의 부분.
      body.results.push(DATA[DATA.length - 1]); // 데이터의 마지막 요소는 제일 최근에 POST된 데이터이기 때문에 그대로 result에 push.
      response.end(JSON.stringify(body)); // 요청한 사람이 받아서 parse을 할 수 있게 stringify를 해서 응답.
    })
  }
私のコードを持ってきてみたらGETリクエスト時にrquestを行います.on("data",)はこの部分は必要ないと思っていたが、なくてはいけないし、POSTリクエストのblockと違ってGETは何もなく、それを処理することもできなかった.だから気分が悪くなりました.
このようにテストに合格したのは、おそらく欲しいものではないだろう.応答として送信されるオブジェクトにはresultsを含む複数の属性が存在し、その属性には他の情報も含まれる可能性がある.私はグーグルを試したり、いろいろな悩みを試したりしましたが、答えはありませんでした...レポートを見て、できるだけ早く衝撃を受けたいです.