네트워크 (IP, 통신)

API 문서 작성법 (엔드포인트, Req,Res, 오류 처리 )

Queen Julia 2024. 6. 16. 16:45

API 문서 작성 시 중요한 요소는 엔드포인트 설명, 요청 및 응답 예제, 오류 처리 방법입니다. 각각의 요소에 대해 자세히 설명드리겠습니다.

1. 엔드포인트 설명

엔드포인트 설명은 API 사용자가 특정 기능을 어떻게 사용할 수 있는지에 대해 명확히 이해할 수 있도록 도와줍니다. 여기에는 URL 경로, HTTP 메서드, 기능 설명 등이 포함됩니다.

**GET /api/v1/users** 
- Description: Retrieves a list of all users. 
- Method: GET 
- URL: /api/v1/users 
- Parameters: None 
- Headers: 
	- Authorization: Bearer token_required
 

2. 요청(Request) 및 응답(Response) 예제

요청과 응답 예제는 사용자가 API를 올바르게 호출하고, 예상되는 응답을 이해하는 데 도움을 줍니다.

 

Request -> Method, URL, Headers, Body 

 **POST /api/v1/users**
- Description: Creates a new user.
- Method: POST
- URL: /api/v1/users
- Headers: 
  - Content-Type: application/json
  - Authorization: Bearer token_required
- Body:
{
  "name": "John Doe",
  "email": "john.doe@example.com",
  "password": "securepassword123"
}
 
Response -> Status, Body 
- Status: 201 Created
- Body:
{
  "id": "12345",
  "name": "John Doe",
  "email": "john.doe@example.com",
  "createdAt": "2024-06-13T12:34:56Z"
}
 
 

3. 오류 처리 방법

오류 처리 방법은 API를 사용하는 동안 발생할 수 있는 오류와 이를 어떻게 처리해야 하는지에 대한 정보를 제공합니다. 각 오류 코드와 그 의미를 설명하고, 오류 발생 시 반환되는 메시지 예제를 포함해야 합니다.

**Error Responses**

- 400 Bad Request
  - Description: The request is invalid or missing required parameters.
  - Example:
  {
    "error": "Bad Request",
    "message": "Missing required field: email"
  }

- 401 Unauthorized
  - Description: Authentication failed or user does not have permission.
  - Example:
  {
    "error": "Unauthorized",
    "message": "Invalid or missing authentication token"
  }

- 404 Not Found
  - Description: The requested resource could not be found.
  - Example:
  {
    "error": "Not Found",
    "message": "User with ID 12345 not found"
  }

- 500 Internal Server Error
  - Description: An unexpected error occurred on the server.
  - Example:
  {
    "error": "Internal Server Error",
    "message": "An unexpected error occurred. Please try again later."
  }

예시 API 문서 작성

다음은 위 요소들을 모두 포함한 예시 API 문서입니다.

# User Management API

## Endpoints

### 1. Retrieve All Users

**GET /api/v1/users**
- Description: Retrieves a list of all users.
- Method: GET
- URL: /api/v1/users
- Parameters: None
- Headers: 
  - Authorization: Bearer token_required

**Response:**
- Status: 200 OK
- Body:
```json
[
  {
    "id": "12345",
    "name": "John Doe",
    "email": "john.doe@example.com",
    "createdAt": "2024-06-13T12:34:56Z"
  },
  ...
]
 

 

2. Create a New User
POST /api/v1/users

Description: Creates a new user.
Method: POST
URL: /api/v1/users
Headers:
Content-Type: application/json
Authorization: Bearer token_required
Body:

[
  {"name": "John Doe", "email": "john.doe@example.com", "password": "securepassword123" }]
  
  Response:

Status: 201 Created
Body:
```json
[
	{
  "id": "12345",
  "name": "John Doe",
  "email": "john.doe@example.com",
  "createdAt": "2024-06-13T12:34:56Z"
}
]

Error Responses
400 Bad Request
```json
[
{
  "error": "Bad Request",
  "message": "Missing required field: email"
}
]
 

API 기술문서 작성하는법

1. API 개요 작성

API 문서의 첫 부분에는 API의 개요와 목적을 설명합니다.

  • API 이름 및 버전
  • 개요: API의 목적과 주요 기능을 간단히 설명합니다.
  • 기본 URL: API 엔드포인트의 기본 URL을 명시합니다.
  • 인증 방법: API 접근을 위해 필요한 인증 방법을 설명합니다.
markdown 

# User Management API

## 개요
이 API는 사용자 계정을 관리하기 위한 기능을 제공합니다. 사용자는 계정을 생성하고, 조회하고, 수정하고, 삭제할 수 있습니다.

- **버전:** v1
- **기본 URL:** `https://api.example.com/v1`
- **인증:** 모든 요청은 Bearer 토큰 인증이 필요합니다.

2. 엔드포인트 설명

각 엔드포인트에 대해 다음과 같은 정보를 포함합니다.

  • HTTP 메서드 및 URL
  • 설명: 엔드포인트의 기능을 설명합니다.
  • 요청 헤더: 필요한 요청 헤더와 그 설명을 포함합니다.
  • 요청 매개변수: 경로 매개변수, 쿼리 매개변수, 본문 매개변수 등을 설명합니다.
  • 요청 본문: JSON 형식의 예제 요청 본문을 포함합니다.
  • 응답: JSON 형식의 예제 응답을 포함하고, 상태 코드와 함께 설명합니다.
markdown 

## 엔드포인트

### 1. 모든 사용자 조회

**GET /users**
- **설명:** 모든 사용자의 목록을 조회합니다.
- **HTTP 메서드:** GET
- **URL:** `/users`
- **요청 헤더:**
  - `Authorization: Bearer {token}`

**응답 예시:**
- **상태 코드:** 200 OK
- **본문:**
```json
[
  {
    "id": "123",
    "name": "John Doe",
    "email": "john.doe@example.com"
  },
  ...
]

2. 사용자 생성

POST /users

  • 설명: 새로운 사용자를 생성합니다.
  • HTTP 메서드: POST
  • URL: /users
  • 요청 헤더:
    • Content-Type: application/json
    • Authorization: Bearer {token}
 
{
  "name": "John Doe",
  "email": "john.doe@example.com",
  "password": "securepassword123"
}
 

401 Unauthorized

  • 설명: 인증이 실패했습니다. 유효한 인증 토큰이 없거나 잘못된 토큰을 제공했을 때 발생합니다.
  • 응답 본문:
{
  "id": "123",
  "name": "John Doe",
  "email": "john.doe@example.com"
}

404 Not Found

  • 설명: 요청한 리소스를 찾을 수 없습니다.
  • 응답 본문:


3. 오류 응답 설명

각 엔드포인트에서 발생할 수 있는 오류와 그에 대한 응답 형식을 설명합니다. 주요 HTTP 상태 코드와 그 의미를 포함합니다.


400 Bad Request


- **설명:** 요청이 잘못되었습니다. 필수 매개변수가 누락되었거나 잘못된 값이 포함되어 있을 때 발생합니다.
- **응답 본문:**

```json
{
  "error": "Bad Request",
  "message": "Missing required field: email"
}

401 Unauthorized

  • 설명: 인증이 실패했습니다. 유효한 인증 토큰이 없거나 잘못된 토큰을 제공했을 때 발생합니다.
{
  "error": "Unauthorized",
  "message": "Invalid or missing authentication token"
}

404 Not Found

  • 설명: 요청한 리소스를 찾을 수 없습니다.
  • 응답 본문:
{
  "error": "Not Found",
  "message": "User with ID 123 not found"
}

500 Internal Server Error

  • 설명: 서버에서 예기치 않은 오류가 발생했습니다.
  • 응답 본문:
{
  "error": "Internal Server Error",
  "message": "An unexpected error occurred. Please try again later."
}​
 

4. 예제 코드 포함

 
사용자가 API를 쉽게 이해하고 사용할 수 있도록, 다양한 언어로 된 예제 코드를 포함합니다. 예제 코드는 요청을 보내고 응답을 처리하는 방법을 보여줍니다.  
**JavaScript (Node.js) 예시:**

```javascript
const fetch = require('node-fetch');

const url = 'https://api.example.com/v1/users';
const options = {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer your_token_here'
  }
};

fetch(url, options)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));​
 

get 메소드로, headers에 authorization담아서 

fetch 

 

javascript는 const 변수 필요

/ python은 import 

 

Python 예시

import requests

url = 'https://api.example.com/v1/users'
headers = {
    'Authorization': 'Bearer your_token_here'
}

response = requests.get(url, headers=headers)
print(response.json())

 

5. FAQ 및 추가 정보

사용자들이 자주 묻는 질문(FAQ) 섹션과 API 사용에 도움이 될 추가 정보를 포함합니다.

 
1. 인증 토큰은 어떻게 얻을 수 있나요?
인증 토큰은 로그인 엔드포인트를 통해 얻을 수 있습니다. 자세한 내용은 인증 섹션을 참조하세요.
 
2. API 제한이 있나요?
 API 호출은 분당 100회로 제한됩니다. 자세한 내용은 API 사용 정책을 참조하세요.

마무리

API 문서 작성은 명확하고 상세하게 작성하는 것이 중요합니다. 사용자가 쉽게 이해하고 사용할 수 있도록 예제와 설명을 충분히 포함해야 합니다. Markdown과 같은 문서 작성 도구를 사용하면 가독성 높은 문서를 작성할 수 있습니다. 이를 통해 사용자에게 친숙하고 유용한 API 문서를 제공할 수 있습니다.

'네트워크 (IP, 통신)' 카테고리의 다른 글

javascript api에서 res, req  (0) 2024.06.17
RESTful API & JSON  (0) 2024.06.16
RESTful API  (0) 2024.06.16
JSON  (0) 2024.06.16
네트워크, 프로토콜, TCP/IP 참조 모델  (0) 2024.06.14