You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无REST服务器(控制器)时如何测试REST客户端?

如何测试REST客户端的变更?

REST API分为两个核心部分:

  • 客户端:负责配置请求头、传递请求负载,发起REST API调用
  • 服务器:接收REST请求,执行业务逻辑并返回响应

如果API的设计已经确定,客户端和服务器可以并行开发。

测试REST服务器的变更时,我们可以借助Postman、Swagger、Advanced REST client这类现成的REST客户端工具。但面对REST客户端的变更测试,我们需要验证并展示请求的完整信息,比如请求URL、PUT/POST等请求方法、请求头,以及作为请求体发送的JSON负载。举个例子,我们需要展示的信息包括:

  • 请求URL:http://localhost:11111/schemas/employee
  • 请求方法:PUT
  • 请求头:Content-Type : application/custom.schema+json
  • 请求头:Accept : application/json

我曾尝试过一款工具,但它仅支持GET和POST请求,无法处理PUT请求。这里提供一段优化后的Go语言示例代码,既可以实现对应的客户端PUT请求,也能直接输出所需展示的请求信息:

package main

import (
    "bytes"
    "fmt"
    "io"
    "net/http"
    "os"
    "path/filepath"
)

var testFile, _ = filepath.Abs("/testSchema.json")
var schemaURL = "http://localhost:11111/schemas/employee"

func manageSchema(schemaEndpoint string) error {
    pwd, _ := os.Getwd()
    employeeData, err := os.ReadFile(pwd + testFile)
    if err != nil {
        fmt.Printf("读取请求体文件失败:%v\n", err)
        return err
    }

    // 输出请求体内容
    fmt.Println("请求体内容:")
    fmt.Println(string(employeeData))

    // 构造PUT请求
    request, err := http.NewRequest(http.MethodPut, schemaEndpoint, bytes.NewBuffer(employeeData))
    if err != nil {
        fmt.Printf("构造请求失败:%v\n", err)
        return err
    }

    // 设置请求头
    request.Header.Set("Content-Type", "application/custom.schema+json")
    request.Header.Set("Accept", "application/json")

    // 输出核心请求信息
    fmt.Printf("\n请求URL:%s\n", schemaEndpoint)
    fmt.Printf("请求方法:%s\n", http.MethodPut)
    fmt.Println("请求头:")
    for k, v := range request.Header {
        fmt.Printf("%s : %s\n", k, v[0])
    }

    // 发送请求
    client := &http.Client{}
    response, err := client.Do(request)
    if err != nil {
        fmt.Printf("\n发送PUT请求失败(端点:%s):%v\n", schemaEndpoint, err)
        return err
    }
    defer func(Body io.ReadCloser) {
        err := Body.Close()
        if err != nil {
            fmt.Println("关闭响应体失败:", err)
        }
    }(response.Body)
    return nil
}

func main() {
    if err := manageSchema(schemaURL); err != nil {
        os.Exit(1)
    }
}

注:原示例代码中补充了请求信息的输出逻辑,运行代码时就能直接看到所需展示的请求URL、方法、头信息和请求体内容。

内容的提问来源于stack exchange,提问作者sandeep kamath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:32:53