🌐 Add Korean translation for Index (#2192)

This commit is contained in:
hard_coder 2020-12-04 02:05:19 +09:00 committed by GitHub
parent 1b70a1cbf6
commit 02b7d988ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 161 additions and 165 deletions

View File

@ -1,12 +1,8 @@
{!../../../docs/missing-translation.md!}
<p align="center"> <p align="center">
<a href="https://fastapi.tiangolo.com"><img src="https://fastapi.tiangolo.com/img/logo-margin/logo-teal.png" alt="FastAPI"></a> <a href="https://fastapi.tiangolo.com"><img src="https://fastapi.tiangolo.com/img/logo-margin/logo-teal.png" alt="FastAPI"></a>
</p> </p>
<p align="center"> <p align="center">
<em>FastAPI framework, high performance, easy to learn, fast to code, ready for production</em> <em>FastAPI 프레임워크, 고성능, 간편한 학습, 빠른 코드 작성, 준비된 프로덕션</em>
</p> </p>
<p align="center"> <p align="center">
<a href="https://github.com/tiangolo/fastapi/actions?query=workflow%3ATest" target="_blank"> <a href="https://github.com/tiangolo/fastapi/actions?query=workflow%3ATest" target="_blank">
@ -22,29 +18,29 @@
--- ---
**Documentation**: <a href="https://fastapi.tiangolo.com" target="_blank">https://fastapi.tiangolo.com</a> **문서**: <a href="https://fastapi.tiangolo.com" target="_blank">https://fastapi.tiangolo.com</a>
**Source Code**: <a href="https://github.com/tiangolo/fastapi" target="_blank">https://github.com/tiangolo/fastapi</a> **소스 코드**: <a href="https://github.com/tiangolo/fastapi" target="_blank">https://github.com/tiangolo/fastapi</a>
--- ---
FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints. FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크입니다.
The key features are: 주요 특징으로:
* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic). [One of the fastest Python frameworks available](#performance). * **빠름**: (Starlette과 Pydantic 덕분에) **NodeJS** 및 **Go**와 대등할 정도로 매우 높은 성능. [사용 가능한 가장 빠른 파이썬 프레임워크 중 하나](#performance).
* **Fast to code**: Increase the speed to develop features by about 200% to 300%. * * **빠른 코드 작성**: 약 200%에서 300%까지 기능 개발 속도 증가. *
* **Fewer bugs**: Reduce about 40% of human (developer) induced errors. * * **적은 버그**: 사람(개발자)에 의한 에러 약 40% 감소. *
* **Intuitive**: Great editor support. <abbr title="also known as auto-complete, autocompletion, IntelliSense">Completion</abbr> everywhere. Less time debugging. * **직관적**: 훌륭한 편집기 지원. 모든 곳에서 <abbr title="also known as auto-complete, autocompletion, IntelliSense">자동완성</abbr>. 적은 디버깅 시간.
* **Easy**: Designed to be easy to use and learn. Less time reading docs. * **쉬움**: 쉽게 사용하고 배우도록 설계. 적은 문서 읽기 시간.
* **Short**: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs. * **짧음**: 코드 중복 최소화. 각 매개변수 선언의 여러 기능. 적은 버그.
* **Robust**: Get production-ready code. With automatic interactive documentation. * **견고함**: 준비된 프로덕션 용 코드를 얻으세요. 자동 대화형 문서와 함께.
* **Standards-based**: Based on (and fully compatible with) the open standards for APIs: <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a> (previously known as Swagger) and <a href="http://json-schema.org/" class="external-link" target="_blank">JSON Schema</a>. * **표준 기반**: API에 대한 (완전히 호환되는) 개방형 표준 기반: <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a> (이전에 Swagger로 알려졌던) 및 <a href="http://json-schema.org/" class="external-link" target="_blank">JSON 스키마</a>.
<small>* estimation based on tests on an internal development team, building production applications.</small> <small>* 내부 개발팀의 프로덕션 애플리케이션을 빌드한 테스트에 근거한 측정</small>
## Gold Sponsors ## 골드 스폰서
<!-- sponsors --> <!-- sponsors -->
@ -56,66 +52,66 @@ The key features are:
<!-- /sponsors --> <!-- /sponsors -->
<a href="https://fastapi.tiangolo.com/fastapi-people/#sponsors" class="external-link" target="_blank">Other sponsors</a> <a href="https://fastapi.tiangolo.com/fastapi-people/#sponsors" class="external-link" target="_blank">다른 스폰서</a>
## Opinions ## 의견들
"_[...] I'm using **FastAPI** a ton these days. [...] I'm actually planning to use it for all of my team's **ML services at Microsoft**. Some of them are getting integrated into the core **Windows** product and some **Office** products._" "_[...] 저는 요즘 **FastAPI**를 많이 사용하고 있습니다. [...] 사실 우리 팀의 **마이크로소프트 ML 서비스** 전부를 바꿀 계획입니다. 그중 일부는 핵심 **Windows**와 몇몇의 **Office** 제품들이 통합되고 있습니다._"
<div style="text-align: right; margin-right: 10%;">Kabir Khan - <strong>Microsoft</strong> <a href="https://github.com/tiangolo/fastapi/pull/26" target="_blank"><small>(ref)</small></a></div> <div style="text-align: right; margin-right: 10%;">Kabir Khan - <strong>마이크로소프트</strong> <a href="https://github.com/tiangolo/fastapi/pull/26" target="_blank"><small>(ref)</small></a></div>
--- ---
"_We adopted the **FastAPI** library to spawn a **REST** server that can be queried to obtain **predictions**. [for Ludwig]_" "_**FastAPI** 라이브러리를 채택하여 **예측**을 얻기 위해 쿼리를 실행 할 수 있는 **REST** 서버를 생성했습니다. [Ludwig을 위해]_"
<div style="text-align: right; margin-right: 10%;">Piero Molino, Yaroslav Dudin, and Sai Sumanth Miryala - <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/" target="_blank"><small>(ref)</small></a></div> <div style="text-align: right; margin-right: 10%;">Piero Molino, Yaroslav Dudin 그리고 Sai Sumanth Miryala - <strong>우버</strong> <a href="https://eng.uber.com/ludwig-v0-2/" target="_blank"><small>(ref)</small></a></div>
--- ---
"_**Netflix** is pleased to announce the open-source release of our **crisis management** orchestration framework: **Dispatch**! [built with **FastAPI**]_" "_**Netflix**는 우리의 오픈 소스 배포판인 **위기 관리** 오케스트레이션 프레임워크를 발표할 수 있어 기쁩니다: 바로 **Dispatch**입니다! [**FastAPI**로 빌드]_"
<div style="text-align: right; margin-right: 10%;">Kevin Glisson, Marc Vilanova, Forest Monsen - <strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072" target="_blank"><small>(ref)</small></a></div> <div style="text-align: right; margin-right: 10%;">Kevin Glisson, Marc Vilanova, Forest Monsen - <strong>넷플릭스</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072" target="_blank"><small>(ref)</small></a></div>
--- ---
"_Im over the moon excited about **FastAPI**. Its so fun!_" "_**FastAPI**가 너무 좋아서 구름 위를 걷는듯 합니다. 정말 즐겁습니다!_"
<div style="text-align: right; margin-right: 10%;">Brian Okken - <strong><a href="https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855" target="_blank">Python Bytes</a> podcast host</strong> <a href="https://twitter.com/brianokken/status/1112220079972728832" target="_blank"><small>(ref)</small></a></div> <div style="text-align: right; margin-right: 10%;">Brian Okken - <strong><a href="https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855" target="_blank">Python Bytes</a> 팟캐스트 호스트</strong> <a href="https://twitter.com/brianokken/status/1112220079972728832" target="_blank"><small>(ref)</small></a></div>
--- ---
"_Honestly, what you've built looks super solid and polished. In many ways, it's what I wanted **Hug** to be - it's really inspiring to see someone build that._" "_솔직히, 당신이 만든 것은 매우 견고하고 세련되어 보입니다. 여러 면에서 **Hug**가 이렇게 되었으면 합니다 - 그걸 만든 누군가를 보는 것은 많은 영감을 줍니다._"
<div style="text-align: right; margin-right: 10%;">Timothy Crosley - <strong><a href="http://www.hug.rest/" target="_blank">Hug</a> creator</strong> <a href="https://news.ycombinator.com/item?id=19455465" target="_blank"><small>(ref)</small></a></div> <div style="text-align: right; margin-right: 10%;">Timothy Crosley - <strong><a href="http://www.hug.rest/" target="_blank">Hug</a> 제작자</strong> <a href="https://news.ycombinator.com/item?id=19455465" target="_blank"><small>(ref)</small></a></div>
--- ---
"_If you're looking to learn one **modern framework** for building REST APIs, check out **FastAPI** [...] It's fast, easy to use and easy to learn [...]_" "_REST API를 만들기 위해 **현대적인 프레임워크**를 찾고 있다면 **FastAPI**를 확인해 보세요. [...] 빠르고, 쓰기 쉽고, 배우기도 쉽습니다 [...]_"
"_We've switched over to **FastAPI** for our **APIs** [...] I think you'll like it [...]_" "_우리 **API**를 **FastAPI**로 바꿨습니다 [...] 아마 여러분도 좋아하실 겁니다 [...]_"
<div style="text-align: right; margin-right: 10%;">Ines Montani - Matthew Honnibal - <strong><a href="https://explosion.ai" target="_blank">Explosion AI</a> founders - <a href="https://spacy.io" target="_blank">spaCy</a> creators</strong> <a href="https://twitter.com/_inesmontani/status/1144173225322143744" target="_blank"><small>(ref)</small></a> - <a href="https://twitter.com/honnibal/status/1144031421859655680" target="_blank"><small>(ref)</small></a></div> <div style="text-align: right; margin-right: 10%;">Ines Montani - Matthew Honnibal - <strong><a href="https://explosion.ai" target="_blank">Explosion AI</a> 설립자 - <a href="https://spacy.io" target="_blank">spaCy</a> 제작자</strong> <a href="https://twitter.com/_inesmontani/status/1144173225322143744" target="_blank"><small>(ref)</small></a> - <a href="https://twitter.com/honnibal/status/1144031421859655680" target="_blank"><small>(ref)</small></a></div>
--- ---
## **Typer**, the FastAPI of CLIs ## **Typer**, FastAPI의 CLI
<a href="https://typer.tiangolo.com" target="_blank"><img src="https://typer.tiangolo.com/img/logo-margin/logo-margin-vector.svg" style="width: 20%;"></a> <a href="https://typer.tiangolo.com" target="_blank"><img src="https://typer.tiangolo.com/img/logo-margin/logo-margin-vector.svg" style="width: 20%;"></a>
If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be used in the terminal instead of a web API, check out <a href="https://typer.tiangolo.com/" class="external-link" target="_blank">**Typer**</a>. 웹 API 대신 터미널에서 사용할 <abbr title="Command Line Interface">CLI</abbr> 앱을 만들고 있다면, <a href="https://typer.tiangolo.com/" class="external-link" target="_blank">**Typer**</a>를 확인해 보세요.
**Typer** is FastAPI's little sibling. And it's intended to be the **FastAPI of CLIs**. ⌨️ 🚀 **Typer**는 FastAPI의 동생입니다. 그리고 **FastAPI의 CLI**가 되기 위해 생겼습니다. ⌨️ 🚀
## Requirements ## 요구사항
Python 3.6+ Python 3.6+
FastAPI stands on the shoulders of giants: FastAPI는 거인들의 어깨 위에 서 있습니다:
* <a href="https://www.starlette.io/" class="external-link" target="_blank">Starlette</a> for the web parts. * 웹 부분을 위한 <a href="https://www.starlette.io/" class="external-link" target="_blank">Starlette</a>.
* <a href="https://pydantic-docs.helpmanual.io/" class="external-link" target="_blank">Pydantic</a> for the data parts. * 데이터 부분을 위한 <a href="https://pydantic-docs.helpmanual.io/" class="external-link" target="_blank">Pydantic</a>.
## Installation ## 설치
<div class="termy"> <div class="termy">
@ -127,7 +123,7 @@ $ pip install fastapi
</div> </div>
You will also need an ASGI server, for production such as <a href="http://www.uvicorn.org" class="external-link" target="_blank">Uvicorn</a> or <a href="https://gitlab.com/pgjones/hypercorn" class="external-link" target="_blank">Hypercorn</a>. 프로덕션을 위해 <a href="http://www.uvicorn.org" class="external-link" target="_blank">Uvicorn</a> 또는 <a href="https://gitlab.com/pgjones/hypercorn" class="external-link" target="_blank">Hypercorn</a>과 같은 ASGI 서버도 필요할 겁니다.
<div class="termy"> <div class="termy">
@ -139,11 +135,11 @@ $ pip install uvicorn
</div> </div>
## Example ## 예제
### Create it ### 만들기
* Create a file `main.py` with: * `main.py` 파일을 만드세요:
```Python ```Python
from typing import Optional from typing import Optional
@ -164,9 +160,9 @@ def read_item(item_id: int, q: Optional[str] = None):
``` ```
<details markdown="1"> <details markdown="1">
<summary>Or use <code>async def</code>...</summary> <summary>또는 <code>async def</code> 사용하기...</summary>
If your code uses `async` / `await`, use `async def`: 여러분의 코드가 `async` / `await`을 사용한다면, `async def`를 사용하세요:
```Python hl_lines="9 14" ```Python hl_lines="9 14"
from typing import Optional from typing import Optional
@ -188,13 +184,13 @@ async def read_item(item_id: int, q: Optional[str] = None):
**Note**: **Note**:
If you don't know, check the _"In a hurry?"_ section about <a href="https://fastapi.tiangolo.com/async/#in-a-hurry" target="_blank">`async` and `await` in the docs</a>. 잘 모르겠다면, <a href="https://fastapi.tiangolo.com/async/#in-a-hurry" target="_blank">문서에서 `async``await`</a>에 관한 _"급하세요?"_ 섹션을 확인해 보세요.
</details> </details>
### Run it ### 실행하기
Run the server with: 서버를 실행하세요:
<div class="termy"> <div class="termy">
@ -211,54 +207,54 @@ INFO: Application startup complete.
</div> </div>
<details markdown="1"> <details markdown="1">
<summary>About the command <code>uvicorn main:app --reload</code>...</summary> <summary><code>uvicorn main:app --reload</code> 명령에 관하여...</summary>
The command `uvicorn main:app` refers to: 명령 `uvicorn main:app`은 다음을 나타냅니다:
* `main`: the file `main.py` (the Python "module"). * `main`: `main.py` 파일 (파이썬 "모듈").
* `app`: the object created inside of `main.py` with the line `app = FastAPI()`. * `app`: the object created inside of `main.py` with the line `app = FastAPI()`.
* `--reload`: make the server restart after code changes. Only do this for development. * `--reload`: 코드가 변경된 후 서버 재시작하기. 개발환경에서만 사용하세요.
</details> </details>
### Check it ### 확인하기
Open your browser at <a href="http://127.0.0.1:8000/items/5?q=somequery" class="external-link" target="_blank">http://127.0.0.1:8000/items/5?q=somequery</a>. 브라우저로 <a href="http://127.0.0.1:8000/items/5?q=somequery" class="external-link" target="_blank">http://127.0.0.1:8000/items/5?q=somequery</a>를 열어보세요.
You will see the JSON response as: 아래의 JSON 응답을 볼 수 있습니다:
```JSON ```JSON
{"item_id": 5, "q": "somequery"} {"item_id": 5, "q": "somequery"}
``` ```
You already created an API that: 여러분은 벌써 API를 만들었습니다:
* Receives HTTP requests in the _paths_ `/` and `/items/{item_id}`. * _경로_ `/``/items/{item_id}`에서 HTTP 요청 받기.
* Both _paths_ take `GET` <em>operations</em> (also known as HTTP _methods_). * _경로_ 모두 `GET` <em>연산</em>(HTTP _메소드_ 로 알려진)을 받습니다.
* The _path_ `/items/{item_id}` has a _path parameter_ `item_id` that should be an `int`. * _경로_ `/items/{item_id}`_경로 매개변수_ `int`형 이어야 하는 `item_id`를 가지고 있습니다.
* The _path_ `/items/{item_id}` has an optional `str` _query parameter_ `q`. * _경로_ `/items/{item_id}`는 선택적인 `str`형 이어야 하는 _경로 매개변수_ `q`를 가지고 있습니다.
### Interactive API docs ### 대화형 API 문서
Now go to <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>. 이제 <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>로 가보세요.
You will see the automatic interactive API documentation (provided by <a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">Swagger UI</a>): 자동 대화형 API 문서를 볼 수 있습니다 (<a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">Swagger UI</a> 제공):
![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png) ![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png)
### Alternative API docs ### 대안 API 문서
And now, go to <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>. 그리고 이제 <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>로 가보세요.
You will see the alternative automatic documentation (provided by <a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a>): 다른 자동 문서를 볼 수 있습니다(<a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a> 제공):
![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png) ![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png)
## Example upgrade ## 예제 개선
Now modify the file `main.py` to receive a body from a `PUT` request. 이제 `PUT` 요청에 있는 본문(Body)을 받기 위해 `main.py`를 수정해봅시다.
Declare the body using standard Python types, thanks to Pydantic. Pydantic을 이용해 파이썬 표준 타입으로 본문을 선언합니다.
```Python hl_lines="4 9 10 11 12 25 26 27" ```Python hl_lines="4 9 10 11 12 25 26 27"
from typing import Optional from typing import Optional
@ -290,175 +286,175 @@ def update_item(item_id: int, item: Item):
return {"item_name": item.name, "item_id": item_id} return {"item_name": item.name, "item_id": item_id}
``` ```
The server should reload automatically (because you added `--reload` to the `uvicorn` command above). 서버가 자동으로 리로딩 할 수 있어야 합니다 (위에서 `uvicorn` 명령에 `--reload`을 추가 했기 때문입니다).
### Interactive API docs upgrade ### 대화형 API 문서 업그레이드
Now go to <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>. 이제 <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>로 이동합니다.
* The interactive API documentation will be automatically updated, including the new body: * 대화형 API 문서가 새 본문과 함께 자동으로 업데이트 합니다:
![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) ![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png)
* Click on the button "Try it out", it allows you to fill the parameters and directly interact with the API: * "Try it out" 버튼을 클릭하면, 매개변수를 채울 수 있게 해주고 직접 API와 상호작용 할 수 있습니다:
![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png) ![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png)
* Then click on the "Execute" button, the user interface will communicate with your API, send the parameters, get the results and show them on the screen: * 그러고 나서 "Execute" 버튼을 누르면, 사용자 인터페이스는 API와 통신하고 매개변수를 전송하며 그 결과를 가져와서 화면에 표시합니다:
![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png) ![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png)
### Alternative API docs upgrade ### 대안 API 문서 업그레이드
And now, go to <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>. 그리고 이제, <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>로 이동합니다.
* The alternative documentation will also reflect the new query parameter and body: * 대안 문서 역시 새 쿼리 매개변수와 본문을 반영합니다:
![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) ![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png)
### Recap ### 요약
In summary, you declare **once** the types of parameters, body, etc. as function parameters. 요약하면, 여러분은 매개변수의 타입, 본문 등을 함수 매개변수로써 **한번에** 선언했습니다.
You do that with standard modern Python types. 여러분은 현대 표준 파이썬 타입으로 이를 행했습니다.
You don't have to learn a new syntax, the methods or classes of a specific library, etc. 새로운 문법, 특정 라이브러리의 메소드나 클래스 등을 배울 필요가 없습니다.
Just standard **Python 3.6+**. 그저 표준 **Python 3.6+**입니다.
For example, for an `int`: 예를 들어, `int`에 대해선:
```Python ```Python
item_id: int item_id: int
``` ```
or for a more complex `Item` model: 또는 좀 더 복잡한 `Item` 모델에 대해선:
```Python ```Python
item: Item item: Item
``` ```
...and with that single declaration you get: ...그리고 단 하나의 선언으로 여러분이 얻는 것은:
* Editor support, including: * 다음을 포함한 편집기 지원:
* Completion. * 자동완성.
* Type checks. * 타입 검사.
* Validation of data: * 데이터 검증:
* Automatic and clear errors when the data is invalid. * 데이터가 유효하지 않을 때 자동으로 생성하는 명확한 에러.
* Validation even for deeply nested JSON objects. * 중첩된 JSON 객체에 대한 유효성 검사.
* <abbr title="also known as: serialization, parsing, marshalling">Conversion</abbr> of input data: coming from the network to Python data and types. Reading from: * 입력 데이터 <abbr title="다음으로 알려진: 직렬화, 파싱, 마샬링">변환</abbr>: 네트워크에서 파이썬 데이터 및 타입으로 전송. 읽을 수 있는 것들:
* JSON. * JSON.
* Path parameters. * 경로 매개변수.
* Query parameters. * 쿼리 매개변수.
* Cookies. * 쿠키.
* Headers. * 헤더.
* Forms. * 폼(Forms).
* Files. * 파일.
* <abbr title="also known as: serialization, parsing, marshalling">Conversion</abbr> of output data: converting from Python data and types to network data (as JSON): * 출력 데이터 <abbr title="다음으로 알려진: 직렬화, 파싱, 마샬링">변환</abbr>: 파이썬 데이터 및 타입을 네트워크 데이터로 전환(JSON 형식으로):
* Convert Python types (`str`, `int`, `float`, `bool`, `list`, etc). * 파이썬 타입 변환 (`str`, `int`, `float`, `bool`, `list`, 등).
* `datetime` objects. * `datetime` 객체.
* `UUID` objects. * `UUID` 객체.
* Database models. * 데이터베이스 모델.
* ...and many more. * ...더 많은 것들.
* Automatic interactive API documentation, including 2 alternative user interfaces: * 대안가능한 사용자 인터페이스를 2개 포함한 자동 대화형 API 문서:
* Swagger UI. * Swagger UI.
* ReDoc. * ReDoc.
--- ---
Coming back to the previous code example, **FastAPI** will: 이전 코드 예제로 돌아가서, **FastAPI**는 다음처럼 처리합니다:
* Validate that there is an `item_id` in the path for `GET` and `PUT` requests. * `GET``PUT` 요청에 `item_id`가 경로에 있는지 검증.
* Validate that the `item_id` is of type `int` for `GET` and `PUT` requests. * `GET``PUT` 요청에 `item_id``int` 타입인지 검증.
* If it is not, the client will see a useful, clear error. * 그렇지 않다면 클라이언트는 유용하고 명확한 에러를 볼 수 있습니다.
* Check if there is an optional query parameter named `q` (as in `http://127.0.0.1:8000/items/foo?q=somequery`) for `GET` requests. * `GET` 요청에 `q`라는 선택적인 쿼리 매개변수가 검사(`http://127.0.0.1:8000/items/foo?q=somequery`처럼).
* As the `q` parameter is declared with `= None`, it is optional. * `q` 매개변수는 `= None`으로 선언되었기 때문에 선택사항입니다.
* Without the `None` it would be required (as is the body in the case with `PUT`). * `None`이 없다면 필수사항입니다(`PUT`의 경우와 마찬가지로).
* For `PUT` requests to `/items/{item_id}`, Read the body as JSON: * `/items/{item_id}`으로의 `PUT` 요청은 본문을 JSON으로 읽음:
* Check that it has a required attribute `name` that should be a `str`. * `name`을 필수 속성으로 갖고 `str` 형인지 검사.
* Check that it has a required attribute `price` that has to be a `float`. * `price`을 필수 속성으로 갖고 `float` 형인지 검사.
* Check that it has an optional attribute `is_offer`, that should be a `bool`, if present. * 만약 주어진다면, `is_offer`를 선택 속성으로 갖고 `bool` 형인지 검사.
* All this would also work for deeply nested JSON objects. * 이 모든 것은 깊이 중첩된 JSON 객체에도 적용됩니다.
* Convert from and to JSON automatically. * JSON으로, 그리고 에서부터 자동 변환.
* Document everything with OpenAPI, that can be used by: * 다음에서 사용할 수 있는 모든 것을 OpenAPI로 문서화:
* Interactive documentation systems. * 대화형 문서 시스템.
* Automatic client code generation systems, for many languages. * 여러 언어들에 대한 자동 클라이언트 코드 생성 시스템.
* Provide 2 interactive documentation web interfaces directly. * 2개의 대화형 문서 웹 인터페이스를 직접 제공.
--- ---
We just scratched the surface, but you already get the idea of how it all works. 우리는 그저 수박 겉핡기만 했을 뿐인데 여러분은 벌써 어떻게 작동하는지 알고 있습니다.
Try changing the line with: 다음 줄을 바꿔보세요:
```Python ```Python
return {"item_name": item.name, "item_id": item_id} return {"item_name": item.name, "item_id": item_id}
``` ```
...from: ...에서:
```Python ```Python
... "item_name": item.name ... ... "item_name": item.name ...
``` ```
...to: ...으로:
```Python ```Python
... "item_price": item.price ... ... "item_price": item.price ...
``` ```
...and see how your editor will auto-complete the attributes and know their types: ...그러고 나서 여러분의 편집기가 속성과 타입을 알고 자동 완성하는지 보세요:
![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) ![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png)
For a more complete example including more features, see the <a href="https://fastapi.tiangolo.com/tutorial/">Tutorial - User Guide</a>. 더 많은 기능을 포함한 보다 완전한 예제의 경우, <a href="https://fastapi.tiangolo.com/tutorial/">튜토리얼 - 사용자 가이드</a>를 보세요.
**Spoiler alert**: the tutorial - user guide includes: **스포일러 주의**: 튜토리얼 - 사용자 가이드는:
* Declaration of **parameters** from other different places as: **headers**, **cookies**, **form fields** and **files**. * 서로 다른 장소에서 **매개변수** 선언: **헤더**, **쿠키**, **폼 필드** 그리고 **파일**.
* How to set **validation constraints** as `maximum_length` or `regex`. * `maximum_length` 또는 `regex`처럼 **유효성 제약**하는 방법.
* A very powerful and easy to use **<abbr title="also known as components, resources, providers, services, injectables">Dependency Injection</abbr>** system. * 강력하고 사용하기 쉬운 **<abbr title="컴포넌트, 리소스, 제공자, 서비스, injectables라 알려진">의존성 주입</abbr>** 시스템.
* Security and authentication, including support for **OAuth2** with **JWT tokens** and **HTTP Basic** auth. * **OAuth2** 지원을 포함한 **JWT tokens** 및 **HTTP Basic**을 갖는 보안과 인증.
* More advanced (but equally easy) techniques for declaring **deeply nested JSON models** (thanks to Pydantic). * (Pydantic 덕분에) **깊은 중첩 JSON 모델**을 선언하는데 더 진보한 (하지만 마찬가지로 쉬운) 기술.
* Many extra features (thanks to Starlette) as: * (Starlette 덕분에) 많은 추가 기능:
* **WebSockets** * **웹 소켓**
* **GraphQL** * **GraphQL**
* extremely easy tests based on `requests` and `pytest` * `requests``pytest`에 기반한 극히 쉬운 테스트
* **CORS** * **CORS**
* **Cookie Sessions** * **쿠키 세션**
* ...and more. * ...기타 등등.
## Performance ## 성능
Independent TechEmpower benchmarks show **FastAPI** applications running under Uvicorn as <a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">one of the fastest Python frameworks available</a>, only below Starlette and Uvicorn themselves (used internally by FastAPI). (*) 독립된 TechEmpower 벤치마크에서 Uvicorn에서 작동하는 FastAPI 어플리케이션이 <a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">사용 가능한 가장 빠른 프레임워크 중 하나</a>로 Starlette와 Uvicorn(FastAPI에서 내부적으로 사용)에만 밑돌고 있습니다. (*)
To understand more about it, see the section <a href="https://fastapi.tiangolo.com/benchmarks/" class="internal-link" target="_blank">Benchmarks</a>. 자세한 내용은 <a href="https://fastapi.tiangolo.com/benchmarks/" class="internal-link" target="_blank">벤치마크</a> 섹션을 보세요.
## Optional Dependencies ## 선택가능한 종속사항
Used by Pydantic: Pydantic이 사용하는:
* <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a> - for faster JSON <abbr title="converting the string that comes from an HTTP request into Python data">"parsing"</abbr>. * <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a> - 더 빠른 JSON <abbr title="HTTP 요청에서 파이썬 데이터로 가는 문자열 변환">"파싱"</abbr>.
* <a href="https://github.com/JoshData/python-email-validator" target="_blank"><code>email_validator</code></a> - for email validation. * <a href="https://github.com/JoshData/python-email-validator" target="_blank"><code>email_validator</code></a> - 이메일 유효성 검사.
Used by Starlette: Starlette이 사용하는:
* <a href="http://docs.python-requests.org" target="_blank"><code>requests</code></a> - Required if you want to use the `TestClient`. * <a href="http://docs.python-requests.org" target="_blank"><code>requests</code></a> - `TestClient`를 사용하려면 필요.
* <a href="https://github.com/Tinche/aiofiles" target="_blank"><code>aiofiles</code></a> - Required if you want to use `FileResponse` or `StaticFiles`. * <a href="https://github.com/Tinche/aiofiles" target="_blank"><code>aiofiles</code></a> - `FileResponse` 또는 `StaticFiles`를 사용하려면 필요.
* <a href="http://jinja.pocoo.org" target="_blank"><code>jinja2</code></a> - Required if you want to use the default template configuration. * <a href="http://jinja.pocoo.org" target="_blank"><code>jinja2</code></a> - 기본 템플릿 설정을 사용하려면 필요.
* <a href="https://andrew-d.github.io/python-multipart/" target="_blank"><code>python-multipart</code></a> - Required if you want to support form <abbr title="converting the string that comes from an HTTP request into Python data">"parsing"</abbr>, with `request.form()`. * <a href="https://andrew-d.github.io/python-multipart/" target="_blank"><code>python-multipart</code></a> - `request.form()`과 함께 <abbr title="HTTP 요청에서 파이썬 데이터로 가는 문자열 변환">"parsing"</abbr>의 지원을 원하면 필요.
* <a href="https://pythonhosted.org/itsdangerous/" target="_blank"><code>itsdangerous</code></a> - Required for `SessionMiddleware` support. * <a href="https://pythonhosted.org/itsdangerous/" target="_blank"><code>itsdangerous</code></a> - `SessionMiddleware` 지원을 위해 필요.
* <a href="https://pyyaml.org/wiki/PyYAMLDocumentation" target="_blank"><code>pyyaml</code></a> - Required for Starlette's `SchemaGenerator` support (you probably don't need it with FastAPI). * <a href="https://pyyaml.org/wiki/PyYAMLDocumentation" target="_blank"><code>pyyaml</code></a> - Starlette의 `SchemaGenerator` 지원을 위해 필요 (FastAPI와 쓸때는 필요가 없을 겁니다).
* <a href="https://graphene-python.org/" target="_blank"><code>graphene</code></a> - Required for `GraphQLApp` support. * <a href="https://graphene-python.org/" target="_blank"><code>graphene</code></a> - `GraphQLApp` 지원을 위해 필요.
* <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a> - Required if you want to use `UJSONResponse`. * <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a> - `UJSONResponse`를 사용하려면 필요.
Used by FastAPI / Starlette: FastAPI / Starlette이 사용하는:
* <a href="http://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> - for the server that loads and serves your application. * <a href="http://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> - 애플리케이션을 로드하고 제공하는 서버.
* <a href="https://github.com/ijl/orjson" target="_blank"><code>orjson</code></a> - Required if you want to use `ORJSONResponse`. * <a href="https://github.com/ijl/orjson" target="_blank"><code>orjson</code></a> - `ORJSONResponse`을 사용하려면 필요.
You can install all of these with `pip install fastapi[all]`. `pip install fastapi[all]`를 통해 이 모두를 설치 할 수 있습니다.
## License ## 라이센스
This project is licensed under the terms of the MIT license. 이 프로젝트는 MIT 라이센스 조약에 따라 라이센스가 부여됩니다.