2021_05_03
11850 ワード
TIL - Chatterbox Server
1. Chatterbox Server
今日は次のレッスンでChatterboxのサーバ部分を実現しました.
1.サーバの作成
const http = require('http');
const server = http.createServer(requestHandler);
createServerを使用してサーバを作成します.各HTTP要求はこのサーバに対して行われる.createServerは1回ずつ実行されます.
const requestHandler = function (request, response) {
~~~
~~~
}
createServerに含まれるコールバック関数.常にrequest、responseをパラメータとして受信し、この関数では常にリクエストと応答を伴う必要があります.2.ブランチ要求
if(request.method === 'GET' && request.url === '/messages'){
~~
}
else if(request.method === 'POST' && request.url === '/messages') {
~~~
}
else { //요청이 잘못 되었을 때
~~~
}
メソッドとurl条件を別々にして、それぞれ条件を作成します.3.条件を満たす要求の作成
if(request.method === 'GET' && request.url === '/messages') {
response.writeHead(200, defaultCorsHeaders); // 헤더를 변경한다.
response.end(JSON.stringify(allMessages)); // 메시지를 JSON 형태로 변환하여 응답한다.
}
else if(request.method === 'POST' && request.url === '/messages') {
let body = [];
request.on('data', (chunk) => {
body.push(chunk); //데이터를 배열에 저장한다.
})
.on('end', () => { //데이터를 모두 받아왔으면
body = Buffer.concat(body).toString(); //Buffer에 데이터 조각조각을 저장하고 문자열 형태로 바꾼다.
body = JSON.parse(body); //JSON 형태로 바꾼다.
response.writeHead(201, defaultCorsHeaders); //헤더를 변경한다.
allMessages.results.push(body); //results 라는 키의 값으로 body를 넣는다.
response.end(JSON.stringify(allMessages)); //메시지를 JSON 형턔로 변환하여 응답한다.
})
else { //요청이 잘못 되었을 때
response.statusCode = 404; // 404 요청코드를 보낸다.
response.end();
}
}
4.CORSリクエストの許可if(request.method === 'OPTIONS') { //CORS 상황이 생겼을 때
response.writeHead(200, defaultCorsHeaders); //CORS 허용할 수 있도록 defaultCorsHeaders를 실행한다.
response.end();
}
const defaultCorsHeaders = {
"access-control-allow-origin": "*", //모든 경로에서 온 요청을 허용한다.
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS", //이와 같은 메서드를 허용한다.
"access-control-allow-headers": "content-type, accept",
"access-control-max-age": 10 //CORS 요청을 10초동안 유지한다.
};
このレッスンでは、サーバを直接実装する時間があります.次のレッスンではexpressを使用してchatterboxserverを実装します
今日はここまで~!~!
Reference
この問題について(2021_05_03), 我々は、より多くの情報をここで見つけました https://velog.io/@jiwon22/20210503テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol