Skip to content

Commit 6793f8e

Browse files
authoredOct 21, 2021
[Added] Korean (axios#51)
* docs: translation korean * docs: korean update
1 parent d6d3792 commit 6793f8e

16 files changed

+1013
-0
lines changed
 

‎inert.config.js

+7
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const ptBRConfig = require("./ptBR.lang.js");
2222
const kuConfig = require("./ku.lang.js");
2323
const esConfig = require('./es.lang.js');
2424
const trConfig = require("./tr.lang.js");
25+
const krConfig = require("./kr.lang.js");
2526

2627
// List of languages
2728
const langs = [
@@ -74,6 +75,12 @@ const langs = [
7475
prefix: "/tr/",
7576
config: trConfig,
7677
},
78+
{
79+
dir: "ltr",
80+
name: "한국어",
81+
prefix: "/kr/",
82+
config: krConfig,
83+
},
7784
];
7885

7986
/**

‎kr.lang.js

+138
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
/**
2+
* Configuration for the english (original) translation
3+
*/
4+
5+
module.exports = {
6+
// Language display name. MUST BE THE SAME AS IN [inert.config.js].custom.langs
7+
display: "한국어",
8+
prefix: "/kr/",
9+
dir: "ltr",
10+
lang: "kr",
11+
// `p` stands for `paragraph`. This will contain translations of full text blocks
12+
p: {
13+
headline: "브라우저와 node.js를 위한 Promise 기반 HTTP 클라이언트 라이브러리",
14+
subhead: `Axios는 브라우저와 node.js를 위한 간단한 Promise 기반 HTTP 클라이언트입니다.
15+
Axios는 확장 가능한 인터페이스를 가진 작은 패키지로 사용하기 쉬운 라이브러리를 제공합니다.`,
16+
},
17+
// `t` stands fot `translation`. This will contain translations of single words or phrases
18+
t: {
19+
"Get Started": '시작하기',
20+
"View on GitHub": 'GitHub 보러가기',
21+
"Languages": '언어',
22+
"Open Source": '오픈소스',
23+
"Contribute": '기여하기',
24+
"Source on GitHub": 'GitHub 소스',
25+
"Fork on GitHub": 'GitHub 포크',
26+
"Fork the Website": '웹사이트 포크',
27+
"Create an Issue": undefined,
28+
"Next": '다음',
29+
"Previous": '이전',
30+
"Website Copy Right Footer": '웹사이트 저작권 푸터',
31+
"View On Github": 'Github 보러가기',
32+
"Axios Project Copy Right Footer": 'Axios 프로젝트 저작권 푸터',
33+
"License Label Footer": '라이센스 라벨 푸터'
34+
},
35+
sidebar: [
36+
{
37+
type: "heading",
38+
text: "시작하기",
39+
},
40+
{
41+
type: "link",
42+
href: "/docs/intro",
43+
text: "소개",
44+
},
45+
{
46+
type: "link",
47+
href: "/docs/example",
48+
text: "예제",
49+
},
50+
{
51+
type: "link",
52+
href: "/docs/post_example",
53+
text: "POST 요청",
54+
},
55+
{
56+
type: "heading",
57+
text: "Axios API",
58+
},
59+
{
60+
type: "link",
61+
href: "/docs/api_intro",
62+
text: "Axios API",
63+
},
64+
{
65+
type: "link",
66+
href: "/docs/instance",
67+
text: "Axios 인스턴스",
68+
},
69+
{
70+
type: "link",
71+
href: "/docs/req_config",
72+
text: "요청 Config",
73+
},
74+
{
75+
type: "link",
76+
href: "/docs/res_schema",
77+
text: "응답 스키마",
78+
},
79+
{
80+
type: "link",
81+
href: "/docs/config_defaults",
82+
text: "Config 기본값",
83+
},
84+
{
85+
type: "link",
86+
href: "/docs/interceptors",
87+
text: "인터셉터",
88+
},
89+
{
90+
type: "link",
91+
href: "/docs/handling_errors",
92+
text: "에러 핸들링",
93+
},
94+
{
95+
type: "link",
96+
href: "/docs/cancellation",
97+
text: "요청 취소",
98+
},
99+
{
100+
type: "link",
101+
href: "/docs/urlencoded",
102+
text: "URL-인코딩 바디",
103+
},
104+
{
105+
type: "heading",
106+
text: "더보기",
107+
},
108+
{
109+
type: "link",
110+
href: "/docs/notes",
111+
text: "참고",
112+
},
113+
{
114+
type: "heading",
115+
text: "기여자",
116+
},
117+
{
118+
type: "link",
119+
href: "https://github.com/axios/axios/blob/master/CODE_OF_CONDUCT.md",
120+
text: "행동 지침",
121+
},
122+
{
123+
type: "link",
124+
href: "https://github.com/axios/axios/blob/master/COLLABORATOR_GUIDE.md",
125+
text: "공동작업자 가이드",
126+
},
127+
{
128+
type: "link",
129+
href: "https://github.com/axios/axios/blob/master/CONTRIBUTING.md",
130+
text: "Axios 기여하기"
131+
},
132+
{
133+
type: "link",
134+
href: "/docs/translating",
135+
text: "해당 문서 번역하기"
136+
}
137+
],
138+
};

‎posts/kr/api_intro.md

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
---
2+
title: 'Axios API'
3+
description: 'Axios API 레퍼런스'
4+
prev_title: 'POST 요청'
5+
prev_link: '/kr/docs/post_example'
6+
next_title: 'Axios 인스턴스'
7+
next_link: '/kr/docs/instance'
8+
---
9+
10+
`axios`에 해당 config을 전송하면 요청이 가능합니다.
11+
12+
##### axios(config)
13+
14+
```js
15+
// POST 요청 전송
16+
axios({
17+
method: 'post',
18+
url: '/user/12345',
19+
data: {
20+
firstName: 'Fred',
21+
lastName: 'Flintstone'
22+
}
23+
});
24+
```
25+
26+
```js
27+
// node.js에서 GET 요청으로 원격 이미지 가져오기
28+
axios({
29+
method: 'get',
30+
url: 'http://bit.ly/2mTM3nY',
31+
responseType: 'stream'
32+
})
33+
.then(function (response) {
34+
response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
35+
});
36+
```
37+
38+
##### axios(url[, config])
39+
40+
```js
41+
// GET 요청 전송 (기본값)
42+
axios('/user/12345');
43+
```
44+
45+
### 요청 메소드 명령어
46+
47+
편의를 위해 지원하는 모든 요청 메소드의 명령어를 제공합니다.
48+
49+
##### axios.request(config)
50+
##### axios.get(url[, config])
51+
##### axios.delete(url[, config])
52+
##### axios.head(url[, config])
53+
##### axios.options(url[, config])
54+
##### axios.post(url[, data[, config]])
55+
##### axios.put(url[, data[, config]])
56+
##### axios.patch(url[, data[, config]])
57+
58+
###### 참고
59+
명령어 메소드를 사용시 'url', 'method', 'data' 속성을 config에서 지정할 필요가 없습니다.

‎posts/kr/cancellation.md

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
title: '요청 취소'
3+
prev_title: '에러 핸들링'
4+
prev_link: '/kr/docs/handling_errors'
5+
next_title: 'URL-인코딩 바디'
6+
next_link: '/kr/docs/urlencoded'
7+
---
8+
9+
*취소 토큰*을 이용해 요청을 취소할 수 있습니다.
10+
11+
> Axios의 취소 토큰 API는 중단된 [proposal-cancelable-promises](https://github.com/tc39/proposal-cancelable-promises)을 기반으로 하고 있습니다.
12+
13+
아래와 같이 `CancelToken.source` 팩토리를 사용하여 취소 토큰을 만들수 있습니다:
14+
15+
```js
16+
const CancelToken = axios.CancelToken;
17+
const source = CancelToken.source();
18+
19+
axios.get('/user/12345', {
20+
cancelToken: source.token
21+
}).catch(function (thrown) {
22+
if (axios.isCancel(thrown)) {
23+
console.log('Request canceled', thrown.message);
24+
} else {
25+
// 에러 핸들링
26+
}
27+
});
28+
29+
axios.post('/user/12345', {
30+
name: 'new name'
31+
}, {
32+
cancelToken: source.token
33+
})
34+
35+
// 요청 취소하기 (메시지 파라미터는 옵션입니다)
36+
source.cancel('Operation canceled by the user.');
37+
```
38+
39+
실행자 함수를 `CancelToken` 생성자에 전달하여, 취소 토큰을 만들수도 있습니다:
40+
41+
```js
42+
const CancelToken = axios.CancelToken;
43+
let cancel;
44+
45+
axios.get('/user/12345', {
46+
cancelToken: new CancelToken(function executor(c) {
47+
// 실행자 함수는 취소 함수를 파라미터로 받습니다.
48+
cancel = c;
49+
})
50+
});
51+
52+
// 요청 취소하기
53+
cancel();
54+
```
55+
56+
> 참고: 같은 취소 토큰으로 여러 요청을 취소할 수 있습니다.

‎posts/kr/config_defaults.md

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
title: 'Config 기본값'
3+
prev_title: '응답 스키마'
4+
prev_link: '/kr/docs/res_schema'
5+
next_title: '인터셉트'
6+
next_link: '/kr/docs/interceptors'
7+
---
8+
9+
## Config 기본값
10+
11+
모든 요청에 적용될 config 기본값을 지정할 수 있습니다.
12+
13+
### 전역 Axios 기본값
14+
15+
```js
16+
axios.defaults.baseURL = 'https://api.example.com';
17+
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
18+
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
19+
```
20+
21+
### 커스텀 인스턴스 기본값
22+
23+
```js
24+
// 인스턴스를 생성할때 config 기본값 설정하기
25+
const instance = axios.create({
26+
baseURL: 'https://api.example.com'
27+
});
28+
29+
// 인스턴스를 만든 후 기본값 변경하기
30+
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;
31+
```
32+
33+
### Config 우선 순위
34+
35+
Config는 우선 순위에 따라 병합됩니다. [lib/defaults.js](https://github.com/axios/axios/blob/master/lib/defaults.js#L28) 라이브러리에서의 기본값, 인스턴스의 `defaults` 속성, 요청의 `config` 인자를 순서대로 찾습니다. 후자가 전자보다 우선순위가 높습니다. 다음은 예제입니다.
36+
37+
```js
38+
// 라이브러리에서 제공하는 config 기본값을 사용하여 인스턴스 만들기
39+
// 이 때 timeout 값은 라이브러리의 기본값인 '0'입니다.
40+
const instance = axios.create();
41+
42+
// 라이브러리에 대한 timeout 값 재정의
43+
// 이제 모든 요청은 시간 초과 전 2.5초 대기하는 인스턴스를 사용합니다.
44+
instance.defaults.timeout = 2500;
45+
46+
// 시간이 오래 걸리는 요청에 대한 timeout 값 재정의
47+
instance.get('/longRequest', {
48+
timeout: 5000
49+
});
50+
```

‎posts/kr/example.md

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
title: '기본 예제'
3+
description: 'Axios를 사용하기 위한 기본 예제'
4+
prev_title: '소개'
5+
prev_link: '/kr/docs/intro'
6+
next_title: 'POST 요청'
7+
next_link: '/kr/docs/post_example'
8+
---
9+
10+
## 참고: CommonJS 사용법
11+
12+
`require()`를 이용한 CommonJS를 사용하는 동안 TypeScript 타이핑(인텔리센스 / 자동 완성)을 사용하려면, 다음 방법을 쓰세요.
13+
14+
```js
15+
const axios = require('axios').default;
16+
17+
// axios.<method>는 이제 자동 완성과 파라미터 타이핑을 제공합니다.
18+
```
19+
20+
# 예제
21+
22+
`GET` 요청 수행하기
23+
24+
```js
25+
const axios = require('axios');
26+
27+
// 지정된 ID를 가진 유저에 대한 요청
28+
axios.get('/user?ID=12345')
29+
.then(function (response) {
30+
// 성공 핸들링
31+
console.log(response);
32+
})
33+
.catch(function (error) {
34+
// 에러 핸들링
35+
console.log(error);
36+
})
37+
.then(function () {
38+
// 항상 실행되는 영역
39+
});
40+
41+
// 선택적으로 위의 요청은 다음과 같이 수행될 수 있습니다.
42+
axios.get('/user', {
43+
params: {
44+
ID: 12345
45+
}
46+
})
47+
.then(function (response) {
48+
console.log(response);
49+
})
50+
.catch(function (error) {
51+
console.log(error);
52+
})
53+
.then(function () {
54+
// 항상 실행되는 영역
55+
});
56+
57+
// async/await 사용을 원한다면, 함수 외부에 `async` 키워드를 추가하세요.
58+
async function getUser() {
59+
try {
60+
const response = await axios.get('/user?ID=12345');
61+
console.log(response);
62+
} catch (error) {
63+
console.error(error);
64+
}
65+
}
66+
```
67+
68+
> **참고:** `async/await` 는 ECMAScript 2017 문법입니다.
69+
> 해당 문법은 인터넷 익스플로러와 오래된 브라우저에서 지원되지 않습니다.

‎posts/kr/handling_errors.md

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
title: '에러 핸들링'
3+
prev_title: '인터셉터'
4+
prev_link: '/kr/docs/interceptors'
5+
next_title: '요청 취소'
6+
next_link: '/kr/docs/cancellation'
7+
---
8+
9+
```js
10+
axios.get('/user/12345')
11+
.catch(function (error) {
12+
if (error.response) {
13+
// 요청이 전송되었고, 서버는 2xx 외의 상태 코드로 응답했습니다.
14+
console.log(error.response.data);
15+
console.log(error.response.status);
16+
console.log(error.response.headers);
17+
} else if (error.request) {
18+
// 요청이 전송되었지만, 응답이 수신되지 않았습니다.
19+
// 'error.request'는 브라우저에서 XMLHtpRequest 인스턴스이고,
20+
// node.js에서는 http.ClientRequest 인스턴스입니다.
21+
console.log(error.request);
22+
} else {
23+
// 오류가 발생한 요청을 설정하는 동안 문제가 발생했습니다.
24+
console.log('Error', error.message);
25+
}
26+
console.log(error.config);
27+
});
28+
```
29+
`validateStatus` config 옵션을 사용하면, 오류를 발생시키는 HTTP 코드를 정의할 수 있습니다.
30+
31+
```js
32+
axios.get('/user/12345', {
33+
validateStatus: function (status) {
34+
return status < 500; // 상태 코드가 500 미만인 경우에만 해결
35+
}
36+
})
37+
```
38+
39+
`toJSON`을 사용하면, HTTP 에러에 대한 더 많은 정보를 객체 형식으로 가저옵니다.
40+
41+
```js
42+
axios.get('/user/12345')
43+
.catch(function (error) {
44+
console.log(error.toJSON());
45+
});
46+
```

‎posts/kr/instance.md

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
title: 'Axios 인스턴스'
3+
prev_title: 'Axios API'
4+
prev_link: '/kr/docs/api_intro'
5+
next_title: '요청 Config'
6+
next_link: '/kr/docs/req_config'
7+
---
8+
9+
### 인스턴스 만들기
10+
11+
사용자 지정 config로 새로운 Axios 인스턴스를 만들수 있습니다.
12+
13+
##### axios.create([config])
14+
15+
```js
16+
const instance = axios.create({
17+
baseURL: 'https://some-domain.com/api/',
18+
timeout: 1000,
19+
headers: {'X-Custom-Header': 'foobar'}
20+
});
21+
```
22+
23+
### 인스턴스 메소드
24+
25+
다음은 사용 가능한 인스턴스 메소드입니다. 지정된 config가 인스턴스 config와 결합됩니다.
26+
27+
##### axios#request(config)
28+
##### axios#get(url[, config])
29+
##### axios#delete(url[, config])
30+
##### axios#head(url[, config])
31+
##### axios#options(url[, config])
32+
##### axios#post(url[, data[, config]])
33+
##### axios#put(url[, data[, config]])
34+
##### axios#patch(url[, data[, config]])
35+
##### axios#getUri([config])

‎posts/kr/interceptors.md

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
title: '인터셉터'
3+
prev_title: '구성 기본값'
4+
prev_link: '/kr/docs/config_defaults'
5+
next_title: '에러 핸들링'
6+
next_link: '/kr/docs/handling_errors'
7+
---
8+
9+
`then` 또는 `catch`로 처리되기 전에 요청과 응답을 가로챌수 있습니다.
10+
11+
```js
12+
// 요청 인터셉터 추가하기
13+
axios.interceptors.request.use(function (config) {
14+
// 요청이 전달되기 전에 작업 수행
15+
return config;
16+
}, function (error) {
17+
// 요청 오류가 있는 작업 수행
18+
return Promise.reject(error);
19+
});
20+
21+
// 응답 인터셉터 추가하기
22+
axios.interceptors.response.use(function (response) {
23+
// 2xx 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
24+
// 응답 데이터가 있는 작업 수행
25+
return response;
26+
}, function (error) {
27+
// 2xx 외의 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
28+
// 응답 오류가 있는 작업 수행
29+
return Promise.reject(error);
30+
});
31+
```
32+
33+
나중에 필요할때 인터셉터를 제거할 수 있습니다.
34+
35+
```js
36+
const myInterceptor = axios.interceptors.request.use(function () {/*...*/});
37+
axios.interceptors.request.eject(myInterceptor);
38+
```
39+
40+
커스텀 인스턴스에서도 인터셉터를 추가할 수 있습니다.
41+
42+
```js
43+
const instance = axios.create();
44+
instance.interceptors.request.use(function () {/*...*/});
45+
```

‎posts/kr/intro.md

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
title: '시작하기'
3+
description: '브라우저와 node.js에서 사용할 수 있는 Promise 기반 HTTP 클라이언트 라이브러리'
4+
next_title: '기본 예제'
5+
next_link: '/kr/docs/example'
6+
---
7+
8+
# Axios란?
9+
Axios는 node.js와 브라우저를 위한 *[Promise 기반](https://javascript.info/promise-basics)* HTTP 클라이언트 입니다. 그것은 *[동형](https://www.lullabot.com/articles/what-is-an-isomorphic-application)* 입니다(동일한 코드베이스로 브라우저와 node.js에서 실행할 수 있습니다). 서버 사이드에서는 네이티브 node.js의 `http` 모듈을 사용하고, 클라이언트(브라우저)에서는 XMLHttpRequests를 사용합니다.
10+
11+
# 특징
12+
13+
- 브라우저를 위해 [XMLHttpRequests](https://developer.mozilla.org/ko/docs/Web/API/XMLHttpRequest) 생성
14+
- node.js를 위해 [http](http://nodejs.org/api/http.html) 요청 생성
15+
- [Promise](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise) API를 지원
16+
- 요청 및 응답 인터셉트
17+
- 요청 및 응답 데이터 변환
18+
- 요청 취소
19+
- JSON 데이터 자동 변환
20+
- [XSRF](https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%9A%94%EC%B2%AD_%EC%9C%84%EC%A1%B0)를 막기위한 클라이언트 사이드 지원
21+
22+
# 설치
23+
24+
npm 사용하기:
25+
26+
```bash
27+
$ npm install axios
28+
```
29+
30+
bower 사용하기:
31+
32+
```bash
33+
$ bower install axios
34+
```
35+
36+
yarn 사용하기:
37+
38+
```bash
39+
$ yarn add axios
40+
```
41+
42+
jsDelivr CDN 사용하기:
43+
44+
```html
45+
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
46+
```
47+
48+
unpkg CDN 사용하기:
49+
50+
```html
51+
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
52+
```

‎posts/kr/notes.md

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
title: '참고'
3+
description: '도움이 될 몇가지 참고'
4+
prev_title: 'URL-인코딩 바디'
5+
prev_link: '/kr/docs/urlencoded'
6+
---
7+
8+
## Semver
9+
10+
Axios가 `1.0` 배포 할때까지, 마이너 버전에서 주요 변경사항이 발생할 수도 있습니다. 예를들어 `0.5.1``0.5.4`는 동일한 API를 가지고 있지만, `0.6.0`에서는 호환되지 않을 수 있습니다.
11+
12+
## Promises
13+
14+
Axios를 사용하려면 Promise API가 [지원](http://caniuse.com/promises)되어야 합니다.
15+
만약 ES6 Promises를 지원하지 않는 환경에서는 [polyfill](https://github.com/jakearchibald/es6-promise)을 사용할 수 있습니다.
16+
17+
18+
## TypeScript
19+
axios는 [TypeScript](http://typescriptlang.org) 정의가 포함되어 있습니다.
20+
```typescript
21+
import axios from 'axios';
22+
axios.get('/user?ID=12345');
23+
```
24+
25+
## 리소스
26+
27+
* [변경 로그](https://github.com/axios/axios/blob/master/CHANGELOG.md)
28+
* [업그레이드 가이드](https://github.com/axios/axios/blob/master/UPGRADE_GUIDE.md)
29+
* [에코시스템](https://github.com/axios/axios/blob/master/ECOSYSTEM.md)
30+
* [기여 가이드](https://github.com/axios/axios/blob/master/CONTRIBUTING.md)
31+
* [행동 지침](https://github.com/axios/axios/blob/master/CODE_OF_CONDUCT.md)
32+
33+
## 크레딧
34+
35+
Axios는 [Angular](https://angularjs.org/)[$http 서비스](https://docs.angularjs.org/api/ng/service/$http)에서 큰 영감을 받았습니다. Axios의 궁극적인 목표는 Angular 외부에서 사용할 수 있는 독립된 `$http`를 제공하는 것 입니다.
36+
37+
38+
## 라이센스
39+
40+
[MIT](https://github.com/axios/axios/blob/master/LICENSE)

‎posts/kr/post_example.md

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
title: 'POST 요청'
3+
description: 'Axios로 POST 요청을 시작하는 방법'
4+
prev_title: '기본 예제'
5+
prev_link: '/kr/docs/example'
6+
next_title: 'Axios API'
7+
next_link: '/kr/docs/api_intro'
8+
---
9+
10+
`POST` 요청 생성
11+
12+
```js
13+
axios.post('/user', {
14+
firstName: 'Fred',
15+
lastName: 'Flintstone'
16+
})
17+
.then(function (response) {
18+
console.log(response);
19+
})
20+
.catch(function (error) {
21+
console.log(error);
22+
});
23+
```
24+
25+
여러 동시 `POST` 요청 생성
26+
27+
```js
28+
function getUserAccount() {
29+
return axios.get('/user/12345');
30+
}
31+
32+
function getUserPermissions() {
33+
return axios.get('/user/12345/permissions');
34+
}
35+
36+
Promise.all([getUserAccount(), getUserPermissions()])
37+
.then(function (results) {
38+
const acct = results[0];
39+
const perm = results[1];
40+
});
41+
```

‎posts/kr/req_config.md

+182
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
---
2+
title: '요청 Config'
3+
prev_title: 'Axios 인스턴스'
4+
prev_link: '/kr/docs/instance'
5+
next_title: '응답 스키마'
6+
next_link: '/kr/docs/res_schema'
7+
---
8+
9+
다음은 요청을 만드는 데 사용할 수 있는 config 옵션들 입니다. 오직 `url`만 필수입니다. `method`를 지정하지 않으면 `GET`방식이 기본값 입니다.
10+
11+
```js
12+
{
13+
// `url`은 요청에 사용될 서버 URL입니다.
14+
url: '/user',
15+
16+
// `method`는 요청을 생성할때 사용되는 메소드입니다.
17+
method: 'get', // 기본값
18+
19+
// `url`이 절대값이 아닌 경우 `baseURL`은 URL 앞에 붙습니다.
20+
// 상대적인 URL을 인스턴스 메서드에 전달하려면 `baseURL`을 설정하는 것은 편리합니다.
21+
baseURL: 'https://some-domain.com/api',
22+
23+
24+
// `transformRequest`는 요청 데이터를 서버로 전송하기 전에 변경할 수 있게 해줍니다.
25+
// 이것은 'PUT', 'POST', 'PATCH', 'DELETE' 메소드에서만 적용됩니다.
26+
// 마지막 함수는 Buffer, ArrayBuffer, FormData 또는 Stream의 인스턴스 또는 문자열을 반환해야 합니다.
27+
// 헤더 객체를 수정할 수 있습니다.
28+
transformRequest: [function (data, headers) {
29+
// 데이터를 변환하려는 작업 수행
30+
31+
return data;
32+
}],
33+
34+
// `transformResponse`는 응답 데이터가 then/catch로 전달되기 전에 변경할 수 있게 해줍니다.
35+
transformResponse: [function (data) {
36+
// 데이터를 변환하려는 작업 수행
37+
38+
return data;
39+
}],
40+
41+
// `headers`는 사용자 지정 헤더입니다.
42+
headers: {'X-Requested-With': 'XMLHttpRequest'},
43+
44+
// `params`은 요청과 함께 전송되는 URL 파라미터입니다.
45+
// 반드시 일반 객체나 URLSearchParams 객체여야 합니다.
46+
// 참고: null이나 undefined는 URL에 렌더링되지 않습니다.
47+
params: {
48+
ID: 12345
49+
},
50+
51+
// `paramsSerializer`는 `params`의 시리얼라이즈를 담당하는 옵션 함수입니다.
52+
// (예: https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/)
53+
paramsSerializer: function (params) {
54+
return Qs.stringify(params, {arrayFormat: 'brackets'})
55+
},
56+
57+
// `data`는 요청 바디로 전송될 데이터입니다.
58+
// 'PUT', 'POST', 'PATCH', 'DELETE' 메소드에서만 적용 가능합니다.
59+
// `transformRequest`가 설정되지 않은 경우 다음 타입 중 하나여야 합니다.
60+
// - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
61+
// - 브라우저 전용: FormData, File, Blob
62+
// - Node 전용: Stream, Buffer
63+
data: {
64+
firstName: 'Fred'
65+
},
66+
67+
// 바디로 전송하는 데이터의 대안 문법
68+
// POST 메소드
69+
// 키가 아닌 값만 전송됩니다.
70+
data: 'Country=Brasil&City=Belo Horizonte',
71+
72+
// `timeout`은 요청이 시간 초과되기 전의 시간(밀리초)을 지정합니다.
73+
// 요청이 `timeout`보다 오래 걸리면 요청이 중단됩니다.
74+
timeout: 1000, // 기본값은 `0` (타임아웃 없음)
75+
76+
// `withCredentials`은 자격 증명을 사용하여 사이트 간 액세스 제어 요청을 해야 하는지 여부를 나타냅니다.
77+
withCredentials: false, // 기본값
78+
79+
// `adapter`'은 커스텀 핸들링 요청을 처리할 수 있어 테스트가 쉬워집니다.
80+
// 유효한 Promise 응답을 반환해야 합니다. (lib/adapters/README.md 참고)
81+
adapter: function (config) {
82+
/* ... */
83+
},
84+
85+
// `auth`는 HTTP Basic 인증이 사용되며, 자격 증명을 제공합니다.
86+
// `auth`를 사용하면, `Authorization` 헤더가 설정되어 `headers`를 사용하여 설정한 기존의 `Authorization` 사용자 지정 헤더를 덮어씁니다.
87+
// 이 파라미터를 통해 HTTP Basic 인증만 구성할 수 있음을 참고하세요.
88+
// Bearer 토큰 등의 경우 `Authorization` 사용자 지정 헤더를 대신 사용합니다.
89+
auth: {
90+
username: 'janedoe',
91+
password: 's00pers3cret'
92+
},
93+
94+
// `responseType`은 서버에서 받는 데이터의 타입입니다.
95+
// 옵션: 'arraybuffer', 'document', 'json', 'text', 'stream'
96+
// 브라우저 전용: 'blob'
97+
responseType: 'json', // 기본값
98+
99+
// `responseEncoding`은 응답 디코딩에 사용할 인코딩입니다.
100+
// Node.js 전용
101+
// 참고: 클라이언트 사이드 요청 또는 `responseType`이 'stream'이면 무시합니다.
102+
responseEncoding: 'utf8', // 기본값
103+
104+
// `xsrfCookieName`은 xsrf 토큰 값으로 사용할 쿠키의 이름입니다.
105+
xsrfCookieName: 'XSRF-TOKEN', // 기본값
106+
107+
// `xsrfHeaderName`은 xsrf 토큰 값을 운반하는 HTTP 헤더의 이름입니다.
108+
xsrfHeaderName: 'X-XSRF-TOKEN', // 기본값
109+
110+
// `onUploadProgress`는 업로드 진행 이벤트를 처리합니다.
111+
// 브라우저 전용
112+
onUploadProgress: function (progressEvent) {
113+
// 업로드 진행 이벤트 작업 수행
114+
},
115+
116+
// `onDownloadProgress`는 다운로드로드 진행 이벤트를 처리합니다.
117+
// 브라우저 전용
118+
onDownloadProgress: function (progressEvent) {
119+
// 다운로드 진행 이벤트 작업 수행
120+
},
121+
122+
// `maxContentLength`는 node.js에서 허용되는 http 응답 콘텐츠의 최대 크기를 바이트 단위로 정의합니다.
123+
maxContentLength: 2000,
124+
125+
// `maxBodyLength`는 허용되는 http 요청 콘텐츠의 최대 크기를 바이트 단위로 정의합니다.
126+
// Node.js 전용
127+
maxBodyLength: 2000,
128+
129+
// `validateStatus`는 지정된 HTTP 응답 상태 코드에 대한 Promise를 이행할지 또는 거부할지 여부를 정의합니다.
130+
// 만약 `validateStatus`가 true를 반환하면(또는 'null' 또는 'undefined'으로 설정) Promise는 이행됩니다.
131+
// 그렇지 않으면, 그 Promise는 거부될 것이다.
132+
validateStatus: function (status) {
133+
return status >= 200 && status < 300; // 기본값
134+
},
135+
136+
// `maxRedirects`는 node.js에서 리디렉션 최대값을 정의합니다.
137+
// 0으로 설정하면 리디렉션되지 않습니다.
138+
maxRedirects: 5, // 기본값
139+
140+
// `socketPath`는 node.js에서 사용될 UNIX 소켓을 정의합니다.
141+
// 예: '/var/run/docker.sock' 도커 데몬에 요청을 보냅니다.
142+
// 오직 `socketPath` 또는 `proxy`만 지정할 수 있습니다.
143+
// 둘 다 지정되면 `socketPath`가 사용됩니다.
144+
socketPath: null, // 기본값
145+
146+
// `httpAgent`와 `httpsAgent`는 각각 node.js에서 http 및 https 요청을 수행할 때 사용할 사용자 지정 에이전트를 정의합니다.
147+
// 이렇게 하면 기본적으로 활성화되지 않은 `keepAlive`와 같은 옵션을 추가할 수 있습니다.
148+
httpAgent: new http.Agent({ keepAlive: true }),
149+
httpsAgent: new https.Agent({ keepAlive: true }),
150+
151+
// `proxy`는 프록시 서버의 호스트이름, 포트, 프로토콜을 정의합니다.
152+
// 기존의 `http_proxy`와 `https_proxy` 환경 변수를 사용하여
153+
// 프록시를 정의할 수도 있습니다.
154+
// 프록시 구성에 환경 변수를 사용하는 경우, 'no_proxy' 환경 변수를
155+
// 쉼표로 구분된 프록시가 되지 않는 도메인 목록으로 정의할 수도 있습니다.
156+
// `false`를 사용하면 프록시를 사용하지 않고, 환경 변수를 무시합니다.
157+
// `auth`는 프록시에 연결하는데 HTTP Basic auth를 사용해야 함을 나타내며,
158+
// 자격 증명을 제공합니다. 그러면 `Proxy-Authorization` 헤더가 설정되고,
159+
// `headers`를 사용하여 기존의 `Proxy-Authorization` 사용자 지정 해더를 덮어씁니다.
160+
// 만약 프록시 서버가 HTTPS를 사용한다면, 프로토콜을 반드시 `https`로 설정해야 합니다.
161+
proxy: {
162+
protocol: 'https',
163+
host: '127.0.0.1',
164+
port: 9000,
165+
auth: {
166+
username: 'mikeymike',
167+
password: 'rapunz3l'
168+
}
169+
},
170+
171+
// `cancelToken`은 요청을 취소하는 데 사용할 수 있는 취소 토큰을 지정합니다.
172+
// (자세한 내용은 요청 취소 섹션 참조)
173+
cancelToken: new CancelToken(function (cancel) {
174+
}),
175+
176+
// `decompress`는 응답 바디의 자동 압축 해제 여부를 나타냅니다.
177+
// `true`로 설정하면, 압축 해제된 모든 응답에서 'content-encoding' 헤더도 제거됩니다.
178+
// Node.js 전용 (XHR은 압축 해제할 수 없습니다)
179+
decompress: true // 기본값
180+
181+
}
182+
```

‎posts/kr/res_schema.md

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
title: '응답 스키마'
3+
prev_title: '요청 Config'
4+
prev_link: '/kr/docs/req_config'
5+
next_title: 'Config 기본값'
6+
next_link: '/kr/docs/config_defaults'
7+
---
8+
9+
요청에 대한 응답은 아래의 정보를 가지고 있습니다.
10+
11+
```js
12+
{
13+
// `data`는 서버가 제공하는 응답입니다.
14+
data: {},
15+
16+
// `status`는 HTTP 상태 코드입니다.
17+
status: 200,
18+
19+
// `statusText`는 HTTP 상태 메시지입니다.
20+
statusText: 'OK',
21+
22+
// `headers`는 HTTP 헤더입니다.
23+
// 모든 헤더 이름은 소문자이며, 괄호 표기법을 사용하여 접근할 수 있습니다.
24+
// 예시: `response.headers['content-type']`
25+
headers: {},
26+
27+
// `config`는 요청을 위해 `Axios`가 제공하는 구성입니다.
28+
config: {},
29+
30+
// `request`는 이번 응답으로 생성된 요청입니다.
31+
// 이것은 node.js에서 마지막 ClientRequest 인스턴스 입니다.
32+
// 브라우저에서는 XMLHttpRequest입니다.
33+
request: {}
34+
}
35+
```
36+
37+
`then`을 사용하면, 아래와 같은 응답을 받습니다:
38+
39+
```js
40+
axios.get('/user/12345')
41+
.then(function (response) {
42+
console.log(response.data);
43+
console.log(response.status);
44+
console.log(response.statusText);
45+
console.log(response.headers);
46+
console.log(response.config);
47+
});
48+
```
49+
50+
`catch`를 사용하거나, [거부 콜백 함수](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise/then)`then`의 두번째 인자로 넘길 시, [에러 핸들링](/kr/docs/handling_errors)에서 설명된 `error` 객체를 사용할 수 있습니다.

‎posts/kr/translating.md

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
title: '문서 번역'
3+
---
4+
5+
가능한 많은 사람들이 Axios를 사용할 수 있도록 하려면 이 문서를 가능한 많은 언어로 읽을 수 있어야 합니다.
6+
번역에 기여하고자 하는 모든 분들을 환영합니다.
7+
여기에서 새 번역을 추가하는 방법을 찾을 수 있습니다.
8+
9+
## 구조
10+
11+
각 번역은 구성 파일 `{language-shortcut}.lang.js` (예를 들어, `en.lang.js` 또는 `de.lang.js`)과 번역된 문서 파일 `posts/{language-shortcut}/*.md` (예를 들어, `posts/en` 또는 `posts/de`)로 구성됩니다.
12+
`{language-shortcut}`는 당신의 언어의 [ISO 639-1](https://ko.wikipedia.org/wiki/ISO_639-1) 2글자 코드로 대체되어야 합니다.
13+
14+
## 당신의 언어 구성하기
15+
16+
- `en.lang.js` 사본 생성
17+
- `{language-shortcut}.lang.js`으로 이름 변경
18+
- `표시되는` 언어의 이름을 변경, 예를 들어 “Korean” 대신 “한국어”가 들어가야 합니다.
19+
- 프리픽스를 `/{language-shortcut}/`로 변경
20+
- `p``t` 필드의 내용 번역
21+
- 사이드바에서 `text` 라벨이 된 요소 번역 **참고:** 문서의 최신 버전 부터, 사이드바의 링크는 더이상 업데이트할 필요가 없습니다.
22+
23+
### 구성 등록하기
24+
25+
구성 파일을 작성한 후 프로젝트 구성 파일에 등록해야 합니다. `inert.config.js`파일을 열고 상단 근처에 다음 코드를 추가하세요:
26+
27+
```js
28+
const {language-shortcut}Config = require('./{language-shortcut}.config.js');
29+
```
30+
31+
물론 `{language-shortuct}`을 정확한 [ISO 369-1](https://ko.wikipedia.org/wiki/ISO_639-1) 코드로 대체하는 것을 잊지마세요.
32+
33+
이제 `langs` 상수를 찾으세요. `require` 문 앞에 상수가 있을 경우, `require`를 상수 선언 앞으로 이동하세요. `langs` 목록에 다음 객체를 추가해야 합니다:
34+
35+
```js
36+
const langs = [
37+
...
38+
{
39+
name: '유니크한 당신의 언어 이름, 예를 들어 "English" or "한국어"',
40+
prefix: "구성 파일과 같은 프리픽스",
41+
config: {language-shortcut}Config // 위에서 임포트한 구성 파일
42+
}
43+
...
44+
];
45+
```
46+
47+
이제, 당신은 파일 번역을 시작할 수 있습니다. `posts/en` 폴더를 복사해서 `posts/{language-shortcut}`로 이름을 바꾸고, 모든 파일을 번역하세요.
48+
49+
만약 어떠한 문제에 부딪히면, [이슈를 만들어주세요](https://github.com/axios/axios-docs/issues/new/choose).

‎posts/kr/urlencoded.md

+94
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
---
2+
title: 'URL-인코딩 바디'
3+
prev_title: '요청 취소'
4+
prev_link: '/kr/docs/cancellation'
5+
next_title: '참고'
6+
next_link: '/kr/docs/notes'
7+
---
8+
9+
보통 Axios는 JSON을 사용합니다. `application/x-www-form-urlencoded` 포맷으로 데이터를 전송하려면, 다음 옵션 중 하나를 사용할 수 있습니다.
10+
11+
### 브라우저
12+
13+
브라우저에서는 [`URLSearchParams`](https://developer.mozilla.org/ko/docs/Web/API/URLSearchParams) API를 사용할 수 있습니다:
14+
15+
```js
16+
const params = new URLSearchParams();
17+
params.append('param1', 'value1');
18+
params.append('param2', 'value2');
19+
axios.post('/foo', params);
20+
```
21+
22+
> 모든 브라우저가 `URLSearchParams`을 지원하지 않지만([caniuse.com](http://www.caniuse.com/#feat=urlsearchparams)을 확인하세요), [polyfill](https://github.com/WebReflection/url-search-params)을 사용할 수 있습니다(polyfill이 전역 환경에 있는지 확인하세요).
23+
24+
대안으로, [`qs`](https://github.com/ljharb/qs) 라이브러리를 사용하여 데이터를 인코딩 할 수 있습니다:
25+
26+
```js
27+
const qs = require('qs');
28+
axios.post('/foo', qs.stringify({ 'bar': 123 }));
29+
```
30+
31+
또는 ES6도 있습니다.
32+
33+
```js
34+
import qs from 'qs';
35+
const data = { 'bar': 123 };
36+
const options = {
37+
method: 'POST',
38+
headers: { 'content-type': 'application/x-www-form-urlencoded' },
39+
data: qs.stringify(data),
40+
url,
41+
};
42+
axios(options);
43+
```
44+
45+
### Node.js
46+
47+
#### 쿼리 스트링
48+
49+
node.js에서는 [`querystring`](https://nodejs.org/api/querystring.html) 모듈을 사용할 수 있습니다:
50+
51+
```js
52+
const querystring = require('querystring');
53+
axios.post('http://something.com/', querystring.stringify({ foo: 'bar' }));
54+
```
55+
56+
['url module'](https://nodejs.org/api/url.html)['URLSearchParams'](https://nodejs.org/api/url.html#url_class_urlsearchparams)도 있습니다:
57+
58+
```js
59+
const url = require('url');
60+
const params = new url.URLSearchParams({ foo: 'bar' });
61+
axios.post('http://something.com/', params.toString());
62+
```
63+
64+
또는 [`qs`](https://github.com/ljharb/qs) 라이브러리를 사용할 수 있습니다.
65+
66+
###### 참고
67+
68+
`querystring` 메소드의 해당 케이스(https://github.com/nodejs/node-v0.x-archive/issues/1665) 처럼 중첩된 객체를 문자열화하는 경우, `qs` 라이브러리가 적합합니다.
69+
70+
#### Form data
71+
72+
node.js에서 다음과 같이 [`form-data`](https://github.com/form-data/form-data) 라이브러리를 사용할 수 있습니다:
73+
74+
```js
75+
const FormData = require('form-data');
76+
77+
const form = new FormData();
78+
form.append('my_field', 'my value');
79+
form.append('my_buffer', new Buffer(10));
80+
form.append('my_file', fs.createReadStream('/foo/bar.jpg'));
81+
82+
axios.post('https://example.com', form, { headers: form.getHeaders() })
83+
```
84+
85+
인터셉터도 대안입니다:
86+
87+
```js
88+
axios.interceptors.request.use(config => {
89+
if (config.data instanceof FormData) {
90+
Object.assign(config.headers, config.data.getHeaders());
91+
}
92+
return config;
93+
});
94+
```

0 commit comments

Comments
 (0)
Please sign in to comment.