Node.js 101 - 작은 API 만들기

저는 자바스크립트를 먼저 배우는 것을 강력히 추천합니다. 다음은 Dev.to에서 작성한 일련의 게시물입니다.

이제 Node.js 학습 여정을 계속할 준비가 되었습니다. :)

아무것도 놓치고 싶지 않다면 팔로우를 클릭하세요. 매일 배운 내용을 여기 Dev.to에 게시할 예정입니다.

더 이상 고민하지 않고 여기에 마지막 날의 메모 요약이 있습니다.

HTML 응답



마지막 과정에서는 서버를 만들고 텍스트와 약간의 html을 보냅니다. 다음은 HTML 응답의 또 다른 예입니다.

const http = require('http')
const server = http.createServer((req, res) => {
const pathName = req.url

    if (pathName === '/friends') {
        res.writeHead(200, {'Content-type': 'text/html' })
        res.end('<h1>This is my friends page</h1>')
    } else {
        res.writeHead(404, {'Content-type': 'text/html' })
        res.end('<h1>Page not found</h1>')
    }
    // send a response to client
})

// start server listening for request
server.listen(5000, 'localhost', () => {
    console.log('Server is listening at localhost on port 5000')
})


JSON 응답



오늘은 JSON을 반환하는 작은 API를 만드는 방법에 대한 예제를 만들 것입니다.

API는 Application Programming Interface의 약자로 두 개의 응용 프로그램이 서로 통신할 수 있도록 하는 소프트웨어 중개자입니다. 우리의 경우 API는 JSON 데이터를 교환합니다.

JSON(JavaScript Object Notation)은 JavaScript 개체 구문을 기반으로 구조화된 데이터를 나타내는 표준 텍스트 기반 형식입니다. 일반적으로 웹 애플리케이션에서 데이터를 전송하는 데 사용됩니다.

API 및 JSON을 처음 사용하는 경우 해당 단어를 Google에 검색하고 이에 대해 자세히 알아볼 것을 강력히 권장합니다.

요컨대 API는 JSON 데이터를 노출하는 웹 서버 앱입니다.

웹 서버 애플리케이션에는 클라이언트가 수신된 데이터를 요청할 수 있는 전용 URL이 있습니다. 예를 들어

모든 친구 JSON 데이터를 검색하기 위한 GET 요청
http://example.com/api/friends

JSON 데이터 1번이 아닌 친구만 검색하는 GET 요청
http://example.com/api/friends/1

다음은 JSON 데이터의 예입니다.

{ "name":"John", "age":30, "car":null }


  • JSON 개체는 중괄호 {}로 묶습니다.
  • JSON 개체는 키/값 쌍으로 작성됩니다.
  • 키는 문자열이어야 하며 값은 유효한 JSON 데이터 유형(문자열, 숫자, 개체, 배열, 부울 또는 null)이어야 합니다.
  • 키와 값은 콜론으로 구분됩니다.
  • 각 키/값 쌍은 쉼표로 구분됩니다.

  • JSON 데이터는 코드에서 생성하거나, 파일에서 읽거나, 데이터베이스에서 읽거나, 타사 API를 통해 읽을 수 있습니다.

    이 예제에서는 코드에서 직접 JSON 데이터를 생성합니다.
    JSON은 Javascript Object Notation이기 때문에 정말 쉽습니다.

    Js에서는 다음과 같은 객체 배열을 만들 수 있습니다.

    const friends = [
        {id: 1, name: 'Mike Taylor', age: 42},
        {id: 2, name: 'John Lamkin', age: 44},
    ]
    


    이 개체 배열은 다음과 같이 JSON으로 변환할 수 있습니다.

    // Convert JS object to JSON string
    const json = JSON.stringify(friends)
    console.log(json) // [{"id":1, "name":"Mike Taylor","age":42},{"id": 2, "name":"John Lamkin","age":44}]
    


    클라이언트 브라우저에 JSON을 보내려면 헤더에 형식을 지정해야 합니다.

    res.writeHead(200, {'Content-type': 'text/json' })
    res.end(json)
    



    다음은 사용자가 방문할 때 JSON을 보내는 전체 예입니다./api/friends

    const http = require('http')
    const friends = [
        {id: 1, name: 'Mike Taylor', age: 42},
        {id: 2, name: 'John Lamkin', age: 44},
    ]
    const json = JSON.stringify(friends)
    const server = http.createServer((req, res) => {
        const pathName = req.url
    
        if (pathName === '/api/friends') {
            res.writeHead(200, {'Content-type': 'text/json' })
            res.end(json)
        } else {
            res.writeHead(404, {'Content-type': 'text/html' })
            res.end('<h1>Page not found</h1>')
        }
        // send a response to client
    })
    
    // start server listening for request
    server.listen(5000, 'localhost', () => {
        console.log('Server is listening at localhost on port 5000')
    })
    


    이 코드는 모든 친구 데이터를 검색하는 데 적합하지만 특정 친구만 검색하는 경우는 어떻습니까? 예: api/friends/1

    그렇게 하려면 URL 엔터티 이름과 ID를 분할하는 코드를 작성해야 합니다. 이를 달성하는 방법에는 여러 가지가 있습니다. 다음은 한 가지 방법입니다.

    const pathName = req.url // '/api/friends/1'
    // Array deconstructing
    const [, , entity, id] = pathName.split('/') // ['', 'api', 'friends', '1']
    


    이제 모든 정보가 있으므로 id: 1만 보내는 것이 쉽습니다.

    const friend = friends.find((friend) => friend.id === Number(id)))
    const json = JSON.stringify(friend)
    res.end(json) // {id: 1, name: 'Mike Taylor', age: 42}
    


    어려울 것 같죠?



    절대 그런 식으로 코딩하면 안 된다고 걱정하지 마세요. Node.js에는 Express.js를 호출하는 프레임워크가 있습니다.

    Express.js에는 라우팅, API 및 템플릿과 같은 서버 관리와 관련된 모든 복잡한 작업을 자동화하는 도구 세트가 있습니다. 우리는 백그라운드에서 추가되는 내용을 이해하는 데 도움이 되도록 학습할 뿐입니다. 여기서 목표는 개념을 이해하는 것뿐입니다.

    결론



    오늘은 여기까지입니다. 내일은 그 모든 학습 내용을 잘 활용하여 첫 번째 템플릿을 만들 것입니다. 조정 유지!

    트위터에서 나를 팔로우하세요:

    좋은 웹페이지 즐겨찾기