sourcecode

express.json()과 express.urlenced()는 무엇입니까?

copyscript 2023. 8. 2. 09:20
반응형

express.json()과 express.urlenced()는 무엇입니까?

다음에 대한 문서를 찾을 수 없습니다.express.json()그리고.express.urlencoded()그들은 각각 정확히 무엇을 합니까?

여기 의심을 풀어야 할 설명이 있습니다.express.json()그리고.express.urlencoded()그리고 바디 파서의 사용.이걸 알아내는데 시간이 좀 걸렸습니다.

  1. 미들웨어란?응용 프로그램 방법에서 요청을 처리하는 것과 응답을 전송하는 것 사이에 이러한 방법/기능/작업이 있습니다.

  2. 에 대해 이야기할 때express.json()그리고.express.urlencoded()POST 요청(예: .post 요청 개체) 및 PUT 요청(예: .put 요청 개체)에 대해 구체적으로 생각합니다.

  3. 은 필요 없습니다.express.json()그리고.express.urlencoded()GET 요청 또는 DELETE 요청의 경우.

  4. 한 경우 »express.json()그리고.express.urlencoded()POST 및 PUT 요청의 경우, 이 두 요청 모두에서 데이터(일부 데이터 개체의 형태)를 서버로 보내고 서버에 본문(즉, 본문)에 포함된 해당 데이터(개체)를 수락하거나 저장하도록 요청합니다.req.body의 ( 또는) 요청 (POST 또는 PUT)

  5. Express는 요청 본문의 (수신) 데이터(개체)를 처리하기 위한 미들웨어를 제공합니다.

    express.json()수신 요청 개체를 JSON 개체로 인식하기 위해 익스프레스에 내장된 메서드입니다.이 방법은 다음 코드를 사용하여 응용 프로그램에서 미들웨어라고 합니다.app.use(express.json());

    express.urlencoded()수신 요청 개체를 문자열 또는 배열로 인식하기 위해 Express에 내장된 메서드입니다.이 방법은 다음 코드를 사용하여 응용 프로그램에서 미들웨어라고 합니다.app.use(express.urlencoded());

  6. 또는 바디 파서(NPM 패키지)를 사용하여 동일한 작업을 수행할 것을 권장합니다.그것은 익스프레스를 만든 동일한 사람들에 의해 개발되었으며 익스프레스와 함께 작업하도록 설계되었습니다.바디 파서는 익스프레스의 일부였습니다.특히 POST 요청(예: .post 요청 개체) 및/또는 PUT 요청(예: .put 요청 개체)에 대한 본문 파서를 생각합니다.

  7. 바디 파서에서 할 수 있습니다.

    // calling body-parser to handle the Request Object from POST requests
    var bodyParser = require('body-parser');
    // parse application/json, basically parse incoming Request Object as a JSON Object 
    app.use(bodyParser.json());
    // parse application/x-www-form-urlencoded, basically can only parse incoming Request Object if strings or arrays
    app.use(bodyParser.urlencoded({ extended: false }));
    // combines the 2 above, then you can parse incoming Request Object if object, with nested objects, or generally any type.
    app.use(bodyParser.urlencoded({ extended: true }));
    

만약 당신이 나에게 묻는다면, "사이의 차이점은 무엇입니까?"express.urlencoded({extended: false})그리고.express.json()차이점은 다음과 같습니다.

  • express.json()

사용하는 경우express.json()HTML 포스트 폼을 제외한 포스트/디버깅 요청에서 본문을 구문 분석합니다.HTML 게시 양식에서 정보를 구문 분석하지 않습니다.

<form action="/" method="POST">
    <input type="text" name="username">
    <button>Submit</button>
</form>

예를 들어 양식에 "dean"을 입력한 후 제출하면 Express는 본문 내부에 다음과 같은 익스프레스 코드가 있는지 알 수 없습니다.

const express = require('express')
const app = express()

app.use(express.json())
// app.use(express.urlencoded({ extended: false }))
app.use(express.static("public"))


app.get("/", (req, res) => {
    res.sendFile("index.html")
})

app.post("/", (req, res) => {
    res.send(req.body)
})


const port = process.env.PORT || 3001
app.listen(port, () => {
    console.log(`Server Up in Port ${port}`);
})

은 보낼것다니를 보낼 입니다.{}제출을 클릭한 후.하지만 만약 당신이 언급하지 않았다면.app.use(express.urlencoded({extended: false}))그러면 당신은 얻을 것입니다.{"username": "dean"}.

차이점은 그서차이은점래입니다.express.json()html 포스트폼을 제외한 포스트 요청에 대한 본문 파서입니다.express.urlencoded({extended: false})HTML 게시 양식의 본문 파서입니다.

json그리고.urlencoded미들웨어는 모두 바디 파서의 일부입니다.README는 다음과 같이 말합니다.

bodyParser([옵션])

둘 다 구문 분석하는 미들웨어를 반환합니다.json그리고.urlencoded.options두 미들웨어에 모두 전달됩니다.

bodyParser.json([옵션])

구문 분석만 하는 미들웨어를 반환합니다.json옵션은 다음과 같습니다.

  • strict 및 분석합니다.
  • limit - 크기 <1mb> - 최대요본문크기
  • reviver에게전된으로 .JSON.parse()

bodyParser.url 인코딩됨([옵션])

구문 분석만 하는 미들웨어를 반환합니다.urlencodedQs 모듈을 사용합니다.옵션은 다음과 같습니다.

  • limit - 크기 <1mb> - 최대요본문크기

미들웨어란?

express.json 및 express.urlencoded가 무엇을 하는지 이해하려면 미들웨어가 무엇인지 이해해야 합니다.

미들웨어는 익스프레스의 기능 또는 방법입니다.서버에 대한 요청에 대한 다양한 작업을 수행하기 위한 JS.

지금쯤 고속을 사용하여 경로에 대한 요청을 받는 방법을 알고 있을 것입니다.

app.get("/api/houses", (req, res) => {
     console.log("Received request");
     res.send("houses")
   })

미들웨어의 중요성

위의 코드는 express가 get 요청을 처리하는 방법의 일반적인 예입니다.그러나 서버에 대한 모든 요청에 대해 작업을 수행해야 하는 경우.모든 경로에서 코드를 반복하지 않을 수 있습니다.

이 단계에서 미들웨어가 구조에 도달합니다.미들웨어는 모든 요청에 대해 일반 수신기 역할을 합니다.

app.use((req, res, next) => {
      console.log("Verifing request"); 
      next();
     })

위는 서버에 대한 모든 요청을 확인하고 요청 유형에 따라 다음 라우팅 미들웨어로 요청을 전송하는 사용자 정의 미들웨어입니다. (GET, POST, PUT 등)

미들웨어 내장

이제 급행JS는 이미 개발자가 지루한 작업을 수행하는 데 도움이 되는 미들웨어를 몇 가지 만들었습니다.요청 본문을 JSON 등으로 변환하는 것과 같은.

Express에 내장된 이러한 기능JS 미들웨어는

  • express.json()
  • express.urlencode()

express.json()은 요청 본문을 JSON으로 변환하는 빌드된 익스프레스 미들웨어입니다.

express.urlencoded()는 express.json()이 요청 본문을 JSON으로 변환하는 것과 마찬가지로 폼 데이터를 JSON으로 변환하는 몇 가지 다른 기능도 수행합니다.

이 미들웨어는 Express v4.16.0 이상에서 사용할 수 있습니다.

app.use(express.urlencoded({ extended: true}))

확장[확장]:이 옵션을 사용하면 쿼리 문자열 라이브러리(false인 경우)를 사용하여 URL 인코딩 데이터를 구문 분석하거나 Qs 라이브러리(true인 경우)를 선택할 수 있습니다."확장" 구문을 사용하면 풍부한 개체와 배열을 URL 인코딩 형식으로 인코딩할 수 있으므로 URL 인코딩을 통해 JSON과 같은 경험을 할 수 있습니다.

express docs :- https://expressjs.com/en/api.html#express.urlencoded

express.urlencoded()는 post 메서드(기본 content-type = application/x-www-form-urlencoded)로 양식을 제출할 때 필요하며, req.body를 사용하지 않으면 req.body가 정의되지 않습니다.

간단히 말해서, 사이의 주요 차이점은express.json()그리고.app.use(express.urlencoded({ extended: true }))Express.js 프레임워크에서는 요청 본문에서 들어오는 데이터를 처리하는 방법입니다.


만약 당신의 클라이언트가 JSON으로 서버에 데이터를 보낸다면, 당신은 사용해야 합니다.express.json()데이터를 분석하고 액세스할 수 있습니다. 또는 를 전송하는 에는 "" "html" "html" "URL" "html" "html" "html" "html" "URL" "html" "html" "html" "html" "html" "html" "html" "html" "html" "html" "html" "html" "hexpress.urlencoded({ extended: true })데이터를 분석하고 액세스할 수 있습니다.클라이언트로부터 수신할 것으로 예상되는 데이터 형식에 따라 적절한 미들웨어를 선택합니다.

언급URL : https://stackoverflow.com/questions/23259168/what-are-express-json-and-express-urlencoded

반응형