\chapter{基于HTTP的通信}


\section{什么是API}
API代表“应用程序编程接口”，即使用编程方法来创建接口，以便另一种编程语言或另一种计算设备可以使用它来进行一些计算或从中获取一些信息。

API在云计算中很常见，世界上几乎所有云服务都向其客户提供其API。

而且，客户端需要使用API与服务器进行通信。 在这种情况下，API的作用就像连接多个用户和中央服务器的桥梁。

\section{如何使用Python创建API服务器}
Flask是执行此操作的常用工具。 Django也很好。 但是为了简化和支持异步编程，我将使用类似于Flask的工具“sanic\cite{sanic}”作为我们使用的工具。

\subsection{API服务器示例}
\lstinputlisting[language=Python]{data/codes/5/1api_server_example.py}

\subsection{测试该服务器}
现在，如果你打开浏览器，访问\textbf{http://0.0.0.0:8000}，将会看到：
\begin{lstlisting}
        awesome people do awesome things.
\end{lstlisting}

如果你访问\textbf{http://0.0.0.0:8000/api/v1/contacts?username=A}，则会看到：
\begin{lstlisting}
        [
          {
            "username": "A",
            "friends": [
              "A's friend 1",
              "A's friend 2"
            ]
          }
        ]
\end{lstlisting}

如果你访问\textbf{http://0.0.0.0:8000/api/v1/contacts?username=B}，则会看到：
\begin{lstlisting}
        [
          {
            "username": "B",
            "friends": [
              "B's friend 1",
              "B's friend 2"
            ]
          }
        ]
\end{lstlisting}