반응형 Archive188 [6] CORS 문제 CORS란 ? 브라우저에서만 가지고있는 CORS정책이 있습니다. 클라이언트와 서버가 동일한 도메인에있다면 리소스를 제약없이 주고받을수 있지만, 다른 도메인에있다면 원칙적으로는 어떤 데이터도 주고받을 수 없습니다. 이것을 가능하게 하려면 header에 Access-Control-Allow-Origin을 명시해 주어야합니다. CORS 문제 해결하기 서버와 클라이언트같에 http통신시 도메인이 다르다면 원칙적으로 어떠한 리소스도 받을 수 없다. 이를 해결하기 위해서는, 서버에서 데이터를 보내줄때 'Access-Control-Allow-Origin'로 특정 도메인을 허용해주어야한다. '*'을 해주면, 모두 허용한다. 유용한 미들웨어로 cors 미들웨어가 있다. server.js app.use((req, res,.. 2022. 4. 3. [5] express.json() vs express.urlencoded() 차이 express.json() vs express.urlencoded() 차이 json()은 body의 값이 REST API를 통해서 JSON형식으로 전달된 것을 파싱하고 urlencoded()는 HTML에서 Form을 통해서 전송된 데이터를 파싱합니다.(반드시 extended 속성을 주어야 합니다) app.use(express.json()); // JSON -> body app.use(express.urlencoded({ extended: false })); // HTML Form -> body 2022. 4. 3. [4] express route로 chaining & Router로 모듈화 route로 chaining 하기 app .route("/post") .get((req, res) => { res.send("GET /post"); }) .post((req, res) => { res.send("POST /post"); }) .delete((req, res) => { res.send("DELETE /post"); }); Router 로 모듈화 app.js import express from "express"; import postRouter from "./router/post.js"; const app = express(); app.use(express.json()); app.use("/post", postRouter); app.listen(8080); post.js import expr.. 2022. 4. 3. [3] express 비동기 에러 해들링 비동기 작업도 자동으로 error 미들웨어로 던지려면? import "express-async-errors" 이 라이브러리를 받고,import 만해주면 Promise를 반환하는 미들웨어의 에러를 error 미들웨어로 넘깁니다. async 함수로 작성된것은 그냥두면 되지만 promise 로 작성된 비동기작업은 반드시 그 promise를 return 해주어야합니다. callback은 처리안해줘도 잡아지는 거같음. import express from "express"; import fs from "fs"; import "express-async-errors"; const app = express(); app.use(express.json()); // 동기작업 에러 처리 app.get("/file1", (req.. 2022. 4. 3. [2] express 에러 핸들링 에러처리하기 express 의 미들웨어에서 에러가 발생한다면, 최하단에 배치해둔 error 파라미터를 포함한 미들웨어로 던져지게 됩니다. 그래서 최하단에 에러를 받을수 있는 미들웨어를 등록해두면 서버가 절대 꺼지지않죠 하지만 비동기작업을 했을때 문제가 발생합니다. callback, promise, async 를 사용한 비동기동작에서 에러가 발생하면, 그에러는 미들웨어를 실행하는 도중에 발생하는 것이 아니라 내부적으로 발생하는 에러이기 때문에, 미들웨어 컨텍스트에서 에러를 잡아낼 수 없습니다. 즉, 마지막의 error를 잡아내는 미들웨어까지 다 지나간 후에야, callstack에 다시 들어와 발생하는 에러이기 때문에 서버가 멈춰버리게 되죠 이를 해결하기 위해서는 반드시 비동기작업에서 각각에 맞는 에러를 핸.. 2022. 4. 3. [1] express 요청,응답,미들웨어 express 살펴보기 Request import express from "express"; const app = express(); app.get("/:id/:user", (req, res, next) => { console.log(req.headers); console.log(req.path); console.log(req.params); console.log(req.query); res.send("done"); }); app.listen(8080); 응답에서 header 설정하기 app.get("/:id/:user", (req, res, next) => { res.setHeader("name2", "ha!"); res.send("done"); }); app.use() vs app.all() 둘은 비.. 2022. 4. 3. 이전 1 ··· 15 16 17 18 19 20 21 ··· 32 다음 반응형