基于 Autograph 和 Synopsis 框架的服务和对象解析器生成工具。
像这样标记你的服务协议
/**
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
可执行文件,以便新的生成的源代码可以被纳入构建过程。该实用程序接受以下参数
-help
— 打印帮助信息,不执行;-verbose
— 打印额外的调试信息;-write_parser
— 开启对象解析器生成;-input_model [folder]
— 模型类和结构所在文件夹的路径(用于解析器生成);-input_service [folder]
— 服务协议所在文件夹的路径;-output [folder]
— 生成文件存放的文件夹路径。你的脚本可能看起来像这样
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
作为工作目录。