Fetch API

Fetch 包提供了一个 Swift 接口,用于发出 HTTP 请求和处理响应,其灵感来自网络开发中常用的 Fetch API

特性

安装

将以下行添加到您的 Package.swift 文件

.package(url: "https://github.com/grdsdev/swift-fetch.git", from: "0.0.1")

然后,将 "Fetch" 添加到您的目标依赖项中。

用法

基本的 GET 请求

import Fetch

let response = try await fetch("https://api.example.com/data")
let json = try await response.json()

带有 JSON 正文的 POST 请求

import Fetch

let response = try await fetch(
  "https://api.example.com/users", 
  options: RequestOptions(
    method: "POST",
    body: ["name": "John Doe", "age": 30],
    headers: ["Content-Type": "application/json"]
  )
)

Multipart 形式的数据

import Fetch

var formData = FormData()
formData.append("username", "johndoe")
formData.append("avatar", imageData, filename: "avatar.jpg", contentType: "image/jpeg")

let response = try await fetch(
  "https://api.example.com/upload", 
  options: RequestOptions(
    method: "POST", 
    body: formData
  )
)

URL 搜索参数

import Fetch
var params = URLSearchParams("https://example.com?foo=1&bar=2")
params.append("baz", "3")
print(params.description) // Output: foo=1&bar=2&baz=3

流式响应

import Fetch

let response = try await fetch("https://api.example.com/stream")

for await chunk in response.body {
  // handle chunk of Data
}

API 参考

有关详细的 API 文档,请参阅源代码中的内联注释。

要求

许可证

此项目已获得 MIT 许可证的许可 - 有关详细信息,请参见 LICENSE 文件。

贡献

欢迎贡献!请随时提交拉取请求。