iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Odoo

前後端整合學習,不只是後端管理系列 第 9 篇

【Day9】odoo 撰寫第一個api

  • 分享至 

  • xImage
  •  

在上篇文章中,我們探討了如何在 Odoo 中撰寫第一個 RESTful API,並介紹了 RESTful API 的基本概念和設計原則。現在,我們將繼續這個話題,通過實際操作來測試我們的 API。

在這篇文章中,我們將使用 Postman 這個強大的工具來測試 API。同時,我們也會簡要介紹其他幾種常見的 API 測試工具,幫助你選擇最適合的工具。然而,最終我們將以 Postman 為例進行詳細的測試操作。

常見的 API 測試工具

在開發和測試 API 的過程中,有多種工具可以幫助開發者模擬請求、分析響應以及進行性能測試。以下是幾種常見的 API 測試工具:

  1. Postman:
    Postman 是最受歡迎的 API 測試工具之一,提供了豐富的功能和簡單易用的界面。它支持 HTTP 請求的完整生命周期管理,從發送簡單的 GET 請求到設置自動化測試流程,Postman 都能勝任。它還支持請求和回應的參數化、環境變量、測試腳本等高級功能,這使得它成為 API 測試的首選工具。
  2. cURL:
    cURL 是一個命令行工具,用於從命令行或腳本中發送 HTTP 請求。它非常輕量且靈活,適合於快速測試和調試 API。雖然它的學習曲線較陡,但它在自動化腳本和簡單測試場景中非常強大。
  3. Insomnia:
    Insomnia 是另一款流行的 API 測試工具,以其簡潔的界面和強大的功能受到開發者的青睞。它支持 GraphQL 和 REST API 測試,並提供了請求分組、環境變量管理以及插件擴展等功能,是 Postman 的一個不錯替代品。
  4. Swagger UI:
    Swagger UI 是一個開源工具,用於可視化和互動地探索 API。它通常與 Swagger(OpenAPI 規範)一起使用,允許開發者直接在瀏覽器中測試 API,並且可以生成自動化的 API 文檔。這對於需要與其他團隊分享 API 規範的情況非常有用。
  5. JMeter:
    JMeter 是一個專注於性能測試的開源工具,雖然它最初是為 Web 應用程式設計的,但現在也支持 API 測試。JMeter 提供了豐富的功能來模擬高並發場景,對於需要測試 API 在壓力下的表現的開發者來說,JMeter 是一個很好的選擇。

雖然這些工具各有特色,但在日常開發和測試中,Postman 以其直觀的操作和豐富的功能,成為了最受歡迎的選擇。接下來,我們將使用 Postman 來測試我們在 Odoo 中撰寫的 API。

準備工作:設定 Odoo 控制器

首先,我們需要在 Odoo 中設定一個簡單的控制器來模擬 API 的行為。為了避免與資料庫進行交互,我們將在控制器中使用簡單的假資料來模擬資料庫的回應。

假設我們已經建立了一個名為 my_api_module 的 Odoo 模組,並且這個模組中包含一個控制器 main.py。我們可以在這個控制器中定義 API,並使用靜態的假資料來回應請求。

from odoo import http

class MyAPIController(http.Controller):

    # 假資料
    PRODUCTS = [
        {'id': 1, 'name': 'Product A', 'price': 10.0},
        {'id': 2, 'name': 'Product B', 'price': 15.5},
        {'id': 3, 'name': 'Product C', 'price': 7.8},
    ]

    @http.route('/api/products', type='json', auth='public', methods=['GET'], csrf=False)
    def get_products(self):
        # 返回假資料
        return {'status': 'success', 'data': self.PRODUCTS}

    @http.route('/api/products', type='json', auth='public', methods=['POST'], csrf=False)
    def create_product(self, **kwargs):
        # 模擬創建新產品
        new_id = len(self.PRODUCTS) + 1
        new_product = {
            'id': new_id,
            'name': kwargs.get('name'),
            'price': kwargs.get('price'),
        }
        self.PRODUCTS.append(new_product)
        return {'status': 'success', 'data': new_product}

在這段代碼中,我們創建了兩個 API 路由:

  • GET /api/products:返回一個靜態的產品列表。
  • POST /api/products:模擬創建一個新產品並將其添加到靜態列表中。

使用 Postman 測試 API

現在,我們可以使用 Postman 來測試這些 API。

  1. 打開 Postman 並創建新請求:

    打開 Postman,點擊 "New" 按鈕,選擇 "Request" 創建一個新請求。為該請求命名,如 "Get Products"。

  2. 設置 GET 請求:

    • 方法:選擇 GET。
    • URL:輸入 http://localhost:8069/api/products(假設 Odoo 正在本地端口 8069 上運行)。
    • 點擊 "Send" 發送請求。

    你應該會看到一個包含產品列表的 JSON 響應,這證明 API 能夠正確返回靜態假資料。

  3. 設置 POST 請求:

    • 方法:選擇 POST。

    • URL:輸入 http://localhost:8069/api/products。

    • Body:選擇 raw 並將格式設為 JSON,然後輸入以下 JSON 數據來模擬創建新產品:

      json複製程式碼
      {
          "name": "Product D",
          "price": 20.0
      }
      
    • 點擊 "Send" 發送請求。

    你應該會看到一個包含新創建產品的 JSON 響應,並且該產品已被添加到靜態列表中。

總結

在這篇文章中,我們探討了幾種常見的 API 測試工具,並最終選擇使用 Postman 來測試我們在 Odoo 中撰寫的 API。通過使用 Postman,我們可以輕鬆地發送 GET 和 POST 請求,並檢查 API 的回應,這對於開發和調試 API 十分有用。

即使是在不連接真實資料庫的情況下,我們也能使用靜態假資料來模擬 API 的行為,這樣可以快速迭代和測試 API 的邏輯。一旦 API 的邏輯得到驗證,我們可以將其連接到真正的資料庫中,以便在生產環境中使用。

通過這些步驟,你應該能夠更好地理解如何在 Odoo 中撰寫和測試 API,並有效利用 Postman 進行開發過程中的調試工作。

參考

Github


上一篇
【Day8】odoo 撰寫第一個api - 理解RESTful
下一篇
【Day10】 撰寫自己的模板
系列文
前後端整合學習,不只是後端管理 共 20 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言