노드에서 API 클라이언트에 자체 개발을 구축합니다.js
20231 단어 apiswebdevjavascriptnode
주의: 최근에 우리는 큰 업데이트를 보았기 때문에 이것은 위대한 시간이다.
REST API와 상호 작용할 때 API Provider를 직접 호출하거나 사용하는 클라이언트입니까?많은 API가 클라이언트, 패키지 또는 SDK를 제공합니다.이런 상황에서 이 용어들의 의미는 모두 같다.클라이언트를 제공하지 않는 API를 사용하는 경우 어떻게 됩니까?필요하십니까?무슨 좋은 점이 있습니까?본고에서, 우리는 당신이 응용 프로그램을 구축하고자 하는 몇 가지 원인을 탐구할 것입니다.또한 보다 포괄적인 API를 기반으로 하는 예제 API 클라이언트를 구축합니다.
용례
API 클라이언트(API SDK 또는 API 패키지라고도 함)는 API와 간접적으로 상호 작용하는 인터페이스입니다.API 클라이언트의 일반적인 기능은 다음과 같습니다.
이 점을 감안하여, Node에 우리의 API 클라이언트를 처음부터 어떻게 만드는지 살펴봅시다.js와 브라우저.
계획 및 설정
이 예에서 우리는 몇 가지 핵심 기능을 중점적으로 소개하고 싶다.
isomorphic-unfetch
와 같은 라이브러리를 포함하여 유류 지원과 노드를 관리할 것이다.js 지원.원한다면 본고에서 언급한 모든 개념을 library of choice로 개편할 수 있습니다.노드에 포함된 https
모듈을 사용할 수도 있습니다.서버 사용에만 관심이 있다면⚠️ 주의: 우리가 구축하고 있는 클라이언트가 브라우저와 노드에서 일할 때.js에서 중요한 것은 클라이언트 자바스크립트에서 API 키를 공개하지 않는 것입니다.클라이언트 호출을 수행하기 전에 사용 중인 API를 사용하여 기본 설정 키 사용법을 확인하십시오.
시작하려면 노드가 있는지 확인하십시오.js 및 NPM이 설치되어 있습니다.그리고 새 노드를 설정합니다.다음 터미널 명령을 사용하는 js 항목:
# Make a new directory
mkdir node-api-client-demo
# Change to the new directory
cd node-api-client-demo
# Initialize a new Node.js project
npm init -y
다음에 index.js
라는 새 파일을 만듭니다.사용하기 편리하도록 모든 코드를 파일에 넣을 것입니다. 그러나 원한다면 코드를 모듈로 분해할 수 있습니다.클라이언트 인터페이스 정의
이 예에 대해 우리는 사용할 것이다.이것은 현재 키 기반 인증만 제공합니다. 이것은 우리의 예시를 간단명료하게 합니다.다음은 계정과 API 키가 필요합니다.당신은 아래의 순서에 따라 이 두 목표를 실현할 수 있습니다.또는 유사The Movie DB API 또는 유사 API 키 기반 플랫폼을 사용할 수 있습니다.
포장기를 구축하기 전에 사용자가 어떻게 상호작용을 원하는지 봅시다.이것은 문서를 우선적으로 하는 방법이다.
const api = new DevTo({
api_key: "xxxxxxxxx"
})
api.getArticles(options).then(articles => {})
api.getArticleById(id).then(article => {})
api.createArticle(body).then(article => {})
위 코드에서 우리는 DevTo
류의 실례를 만들어 api_key
에 전달했다.그런 다음 API와 상호 작용하는 다양한 방법을 볼 수 있습니다.간결하게 보기 위해서, 우리는 문장을 검색하고, 특정한 문장을 얻으며, 새로운 문장을 만드는 데 중점을 둘 것이다.문서 URL에 주의를 기울이면, 내부 Getter와setter가 같은 이름을 사용합니다.이것은 필수적인 것은 아니지만, 명명 방안은 상당히 흔하다.이제 우리는 우리 반을 건설하기 시작할 수 있다.
클라이언트 클래스 구축
앞의
index.js
파일을 열고 다음과 같이 클래스를 생성합니다.
class DevTo {
constructor(config) {
this.api_key = config.api_key
this.basePath = "https://dev.to/api"
}
}
위의 코드는 DevTo
클래스를 정의하고 구성 함수를 설정 수용 대상으로 설정합니다.그리고 설정api_key
에서 설정하고 basePath
속성을 API 단점의 기본 URL으로 설정합니다.현재 설치 및 설치가 필요합니다HTTP library.우리는 이 예에서 isomorphic-unfetch
을 사용할 것이다. 왜냐하면 그것은 약속에 기초한 것이기 때문이다.설치
isomorphic-unfetch
:npm install isomorphic-unfetch
index.js
파일 상단에 있는 패키지가 필요합니다.// index.js
const fetch = require("isomorphic-unfetch")
class DevTo {
/*...*/
}
다음에 우리는 우리의 방법을 제정할 수 있다.우리는 구축과 요청을 처리하기 위해 상기 예시 중의 세 가지 방법과 다시 사용할 수 있는 request
방법이 필요합니다.
class Devto{
constructor(config) {
this.api_key = config.api_key
this.basePath = "https://dev.to/api"
}
request(endpoint, options) { /*...*/ }
getArticles(options) {
// 1. Convert options to query string
// 2. return this.request
}
getArticleById(id) {
// 1. Build endpoint based on id
// 2. return this.request
}
createArticle(body) {
// 1. Build endpoint
// 2. return this.request with body attached
}
}
우리 위의 방법은 모든 방법에 필요한 절차를 포함한다.우리는 단독으로 그것들을 구축할 것이다. 그러나 우선, 우리는 request
사용할 수 있도록 해야 한다.
request(endpoint = "", options = {}) {
let url = this.basePath + endpoint
let headers = {
'api_key': this.api_key,
'Content-type': 'application/json'
}
let config = {
...options,
...headers
}
return fetch(url, config).then(r => {
if (r.ok) {
return r.json()
}
throw new Error(r)
})
}
위의 코드 블록에 우리는 request
의 기능을 기입했다.그것은 endpoint
문자열과 config
대상을 매개 변수로 한다.그리고 우리는 url
와 endpoint
에서 basePath
를 구축했다.Dev.to API는 api_key
를 헤드로 사용하여 인증하기 때문에 우리는 이를 Content-Type
와 함께 헤드로 정의하여 우리가 잠시 후에 보낼 POST
요청을 앞다투어 처리한다.다음에 우리는 spread operator를 사용하여 전송options
대상과 headers
대상을 새로운 config
로 통합시켰다.마지막으로, 우리는
fetch
되돌아와서 간단한 오류 검사와 json 변환을 진행했다.이것은 중요한 부분이다.Return, 그리고 우리의 다른 방법의 보답은 사용자와 우리의 고객이 다른 약속과 상호작용을 할 수 있도록 허용할 것이다.링크then
를 통해async/await를 사용하거나다음은
getArticles
방법을 정의합시다.이를 위해, 옵션의 대상을 검색 문자열에 통합하는 작은 보조 도구가 필요합니다.브라우저에서 one of the libraries on NPM를 사용하거나 사용자 고유의 를 작성할 수 있습니다.Node에 있는 경우 내장형querystring
모듈을 사용할 수 있습니다.먼저 모듈은 위쪽에 있어야 합니다
isomorphic-unfetch
.const querystring = require("querystring")
그런 다음 getArticles
메서드를 입력합니다.getArticles(options) {
let qs = options ? "?" + querystring.stringify(options) : ""
let url = "/articles" + qs
let config = {
method: 'GET'
}
return this.request(url, config)
}
여기에서 사용자가 입력한 모든 옵션에 따라 검색 문자열을 만듭니다.상당히 많은 검색 매개 변수를 사용할 수 있습니다.사용자가 객체로 제공하지만 API가 이해할 수 있는 질의 문자열로 처리할 수 있습니다.그리고 단점에 추가하고 기본 설정을 설정합니다. method
를 GET
로 정의합니다.GET
가 기본값이므로 필요하면 비활성화할 수 있습니다.다음은 위에서 조금 다른 버전에 대해 우리는
getArticleById
방법을 기입할 수 있다.getArticleById(id) {
let url = "/articles/" + id
return this.request(url, {})
}
여기서 URL을 구성하는 동일한 패턴을 따르고 적절한 매개변수가 있는 request
방법을 반환합니다.마지막으로
createArticle
방법을 구축합시다.createArticle(body) {
const options = {
method: 'POST',
body: JSON.stringify(body)
}
return this.request('/articles', options)
// Optional: add your own .catch to process/deliver errors or fallbacks specific to this resource
}
결과는 앞의 방법과 같다.유일한 차이점은 현재 설정method
을 POST
로 설정하고article 대상 문자열을 body
로 바꾸는 것입니다.모든 반환 후, 자원에 대한 오류 처리를 처리하기 위해 링크 catch
를 선택할 수 있습니다.그렇지 않으면 사용자는 모든 오류를 처리해야 합니다.이 모든 것을 결합시키다
클라이언트가 설치된 후 우리는 최초의 클라이언트 실현 예시로 돌아갈 수 있다.
const api = new DevTo({
api_key: "XXXXXXXXX"
})
api.getArticles({ username: "bearer", page: 1 }).then(data => console.log(data))
이것은 문장의 첫 페이지로 되돌아갈 것이다.이 클라이언트의 소비자는 다음과 같이 API 호출을 모니터링하기 위해 Bearer을 추가로 사용할 수 있습니다.const Bearer = require("@bearer/node-agent")
Bearer.init({
secretKey: "YOUR-SECRET-KEY"
}).then(() => {
const api = new DevTo({
api_key: "XXXXXXXXX"
})
api
.getArticles({ username: "bearer", page: 1 })
.then(data => console.log(data))
})
이것은 단지 시작일 뿐이다.API 클라이언트는 다양한 반복 용례를 처리할 수 있습니다.이것은 API 버전을 클라이언트 버전으로 잠그고 더 많은 것을 허용할 수 있으며 사용자의 요구에 따라 개발자 체험을 맞춤형으로 할 수 있습니다.전화번호complex authentication methods입니다.자주 사용하는 API 주위에 패키지가 구축되어 있습니까?API 사용에 대한 자세한 내용은 full code from our example를 참조하십시오.
Reference
이 문제에 관하여(노드에서 API 클라이언트에 자체 개발을 구축합니다.js), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bearer/build-your-own-dev-to-api-client-in-node-js-5e5p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)