APIWrapper

1.2.2

🍯 Use @propertyWrapper to provide the necessary data for network requests in a more aggregated form.
RakuyoKit/RaAPIWrapper

What's New

1.2.2 - PrivacyInfo

2024-01-23T08:14:16Z

Added

  • Add PrivacyInfo.xcprivacy.

Changed

  • [Break] Minimum version supported by the promotion project: iOS 12、macOS 10.14、watchOS 5.0、tvOS 12 or later.
  • Support visionOS.

Fixed

  • Fix SPM dependency error.
  • Package.swift supports wider Swift versions.

RaAPIWrapper

δΈ­ζ–‡

RaAPIWrapper uses @propertyWrapper to achieve a similar effect to that of defining network requests in the Android Retrofit library.

When you have a large number of network request apis in the same file RaAPIWrapper can help you define each request in a more aggregated form, so you don't have to jump back and forth within the file.

Say it before

Special Note! : RaAPIWrapper is just a syntactic sugar for defining web requests. You need to use Alamofire, Moya, other third-party web framework or call URLSession directly to initiate web requests on this basis.

The good thing is that you can easily integrate RaAPIWrapper into your existing project with few or no code changes, and RaAPIWrapper can coexist very well with the existing web framework in your project.

Requirements

  • iOS 12、macOS 10.14、watchOS 5.0、tvOS 12 or later.
  • Xcode 14 or later required.
  • Swift 5.7 or later required.

Example

@GET("/api/v1/no_param")
static var noParamAPI: APIParameterBuilder<()>? = nil

@POST("/api/v1/tuple_param")
static var tupleParamAPI: APIParameterBuilder<(id: Int, name: String?)>? = .init {
    // `Dictionary` and `Array` can be used directly as parameters.
    ["id": $0.id, "name": $0.name]
}

@POST("/post")
static var postWithModel: APIParameterBuilder<Arg>? = .init {
    // When the parameter `Arg` complies with the `APIParameter` (`Encodable & Hashable`) protocol, 
    // it can be used directly as a parameter.
    $0
}

Install

CocoaPods

pod 'RaAPIWrapper'

If your project relies on Alamofire, then you may also consider relying on RaAPIWrapper/AF. This module provides a wrapper for ParameterEncoding.

Swift Package Manager

Or add the following to your Package.swift file:

dependencies: [
  .package(
    url: "https://github.com/RakuyoKit/RaAPIWrapper.git", 
    .upToNextMajor(from: "1.2.1")
  )
]

Usage

Please refer to the example in Demo.playground.

Since playground depends on RaAPIWrapper in the form of Swift Package Manager, please open the project via Package.swift first, then select Demo.playground from the left navigation bar and run the content.

License

RaAPIWrapper is available under the MIT license. For more information, see LICENSE.

Description

  • Swift Tools 5.9.0
View More Packages from this Author

Dependencies

Last updated: Thu May 02 2024 18:09:02 GMT-0900 (Hawaii-Aleutian Daylight Time)