服务签名

基于 AutographSynopsis 框架的服务和对象解析器生成工具。

用法

准备你的源文件

像这样标记你的服务协议

/**
 MANDATORY SERVICE ANNOTATION:
 @service PersonServiceGen
 
 YOU MAY OMIT THE EXPLICIT SERVICE NAME
 */
protocol PersonService {

    /**
     EACH SERVICE METHOD MUST RETURN ServiceCall<> OR CancelableServiceCall<>
     
     `GET` IS A DEFAULT HTTP METHOD.
     */
    func get() -> ServiceCall<[Person]>
    
    /**
     PROVIDE RELATIVE URL
     @url /{id}
     
     BASE URL IS INJECTED BY CONSTRUCTOR
     */
    func get(
        personId id: Int // MARK ARGUMENTS TO BE INSERTED INTO URL PLACEHOLDERS: @url
    ) -> ServiceCall<Person>
    
    /**
     SUPPORTED HTTP METHODS: get, post, put, patch, delete, head, options
     @post
     
     USE CancelableServiceCall<> WHEN CALL CANCELING OPTION IS REQUIRED
     
     KEEP IN MIND YOU CAN USE Void IN CASE YOU DON'T NEED SERVER RESPONSE TO BE PARSED
     */
    func register(
        firstName: String, // @json first_name
        lastName: String   // @json last_name
    ) -> CancelableServiceCall<Void>
    
    /**
     SUPPORTED ARGUMENT SERIALIZATION OPTIONS: json, query, plist, url, header
     
     ARGUMENT BODY NAME IS AN IMPLICIT ANNOTATION VALUE
     
     @put
     */
    func auth(
        token: String // @header X-Auth-Header
    ) -> ServiceCall<String>
    
}

Service Autograph 将为你的每个服务协议生成具体的实现,并生成一个支持文件 Service.swift

Service Autograph 也可以为你生成通用的 object parser 工具类,以及为你的每个模型生成 Decodable 扩展。要做到这一点,请使用相应的 -write_parser 参数。

构建可执行文件

运行 spm_build.command 脚本以从源代码构建。

你将在 ./build/x86_64-apple-macosx10.10/release 文件夹或类似的文件夹中找到你的 ServiceAutograph 可执行文件,具体取决于你的操作系统。

向你的项目添加运行脚本构建阶段

在其他构建阶段之前运行 ServiceAutograph 可执行文件,以便新的生成的源代码可以被纳入构建过程。该实用程序接受以下参数

你的脚本可能看起来像这样

SERVICE_AUTOGRAPH_PATH=Utilities/ServiceAutograph

if [ -f $SERVICE_AUTOGRAPH_PATH ]
then
    echo "ServiceAutograph executable found"
else
    osascript -e 'tell app "Xcode" to display dialog "Service generator executable not found in \nUtilities/ServiceAutograph" buttons {"OK"} with icon caution'
fi

$SERVICE_AUTOGRAPH_PATH \
    -write_parser \
    -input_model "$PROJECT_NAME/Classes/Model" \
    -input_service "$PROJECT_NAME/Classes/Service" \
    -output "./$PROJECT_NAME/Generated/Classes"

演示 & 运行测试

使用 spm_resolve.command 加载所有依赖项,并使用 spm_generate_xcodeproj.command 组装一个 Xcode 项目文件。此外,请确保 Xcode 目标平台是 macOS。

运行 spm_run_sandbox.command 脚本进行演示 —— 它将构建并启动 Service Autograph,并将 Sources/Sandbox 作为工作目录。