@Api
代码示例
在这里使用
@Api
注解,它有一个url
参数,默认值为""
@Api(url = "user")
interface UserApi {
@POST(url = "login")
suspend fun login(
@Field username: String,
@Field password: String
): LoginDTO
}
@Serializable
data class LoginDTO(
val token: String
)
生成实现
以下代码将会自动生成,您只需要通过
Ktorfitx<DefaultApiScope>
的扩展属性userApi
获取实例即可如果您想要了解
Ktorfitx<T>
相关的文档,进前往 创建 Ktorfitx 查看
private class UserApiImpl private constructor(
private val config: KtorfitxConfig,
) : UserApi {
override suspend fun login(username: String, password: String): LoginDTO {
val response = this.config.httpClient.post {
this.url("user/login")
this.contentType(ContentType.Application.FormUrlEncoded)
this.setBody(listOf("username" to username, "password" to password).formUrlEncode())
}
return response.body()
}
@OptIn(InternalAPI::class)
companion object {
private var defaultApiScopeInstance: UserApi? = null
private val defaultApiScopeSynchronizedObject: SynchronizedObject = SynchronizedObject()
fun getInstanceByDefaultApiScope(ktorfitx: Ktorfitx<DefaultApiScope>): UserApi = defaultApiScopeInstance ?: synchronized(defaultApiScopeSynchronizedObject) {
defaultApiScopeInstance ?: UserApiImpl(ktorfitx.config).also { defaultApiScopeInstance = it }
}
}
}
val Ktorfitx<DefaultApiScope>.userApi: UserApi
@JvmName("userApiByDefaultApiScope")
get() = UserApiImpl.getInstanceByDefaultApiScope(this)
注意事项
除
@Api
和@ApiScope
文档,其余文档将不展示接口和类的代码,以方便用户阅读文档
Last modified: 30 July 2025