GitHub Workflow Status (with event) Codecov GitHub code size in bytes Swift Version 5.8 GitHub Buy Me A Coffee

StrapiSwiftCross

此项目围绕 Strapi API 构建了一个绑定,旨在简化 Swift 项目和 Strapi 后端之间的通信;并尝试消除编写任何 URLSession 代码的需要。

技术栈

Swift 5.8, XCTest, Swift DocC, Mocker (仅用于测试套件)

文档

Swift DocC 生成的文档托管在 GitHub Pages 上。 我已尝试在通篇提供相当详细的文档注释以及以下示例,这应该足以让您启动并运行。

安装

StrapiSwiftCross 库添加到您的 Package.swift 文件中,就像添加任何其他库一样。 目前不支持 CocoaPods 或 Carthage,如果您需要此功能,请随时打开 pull request!

// swift-tools-version:5.8
import PackageDescription

let package = Package(
    name: "Example",
    products: [
        .library(name: "Example", targets: ["Example"]),
    ],
    dependencies: [
        .package(url: "https://github.com/lorenalexm/StrapiSwiftCross.git", from: "0.1.0")
    ],
    targets: [
        .target(
            name: "Example",
            dependencies: ["StrapiSwiftCross"]),
        .testTarget(
            name: "ExampleTests",
            dependencies: ["Example"]),
    ]
)

用法/示例

从 Strapi 查询 posts 资源的基本示例。

import StrapiSwiftCross

let strapi = Strapi(host: "https://:1337/api")
let request = QueryRequest("posts")
let result = try? await strapi.execute(request)
print(result)

从 Strapi 查询和过滤 posts 示例资源的示例。

import StrapiSwiftCross

let strapi = Strapi(host: "https://:1337/api")
let request = QueryRequest("posts")
request.addFilter(type: .greaterThan, onField: "viewCount", forValue: 500)
let result = try? await strapi.execute(request)
print(result)

从 Strapi 查询、过滤和排序 posts 示例资源的示例。

import StrapiSwiftCross

let strapi = Strapi(host: "https://:1337/api")
let request = QueryRequest("posts")
request.addFilter(type: .greaterThan, onField: "viewCount", forValue: 500)
request.sort(field: "slug", byDirection: .descending)
request.limit(to: 3)

let result = try? await strapi.execute(request)
print(result)

以上所有示例都展示了如何从 Strapi 主机检索 JSON 字符串作为结果。 还有一个实用方法可以使 JSONDecoder 自动在响应上运行,从而返回 T 对象。

该示例假设您在某处定义了一个模型结构 PostsQueryResponse。 鉴于 Strapi 的自定义功能,此示例中省略了模型定义。

import StrapiSwiftCross

let strapi = Strapi(host: "https://:1337/api")
let request = QueryRequest("posts")

let result: PostsQueryResponse = try? await strapi.executeAndDecode(request)
print(result)

运行测试

要运行测试套件,请运行以下命令

  swift test

鸣谢

许可

MIT