diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index a2cf405..639c779 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -9,8 +9,8 @@
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 0c6dbbc..a01f761 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,3 +1,6 @@
+//import org.jetbrains.kotlin.konan.properties.Properties
+import java.util.Properties
+
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
@@ -18,6 +21,15 @@ android {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+
+// defaultConfig 블록 안에 추가
+ val properties = Properties()
+ val localPropertiesFile = rootProject.file("local.properties")
+ if (localPropertiesFile.exists()) {
+ properties.load(localPropertiesFile.inputStream())
+ }
+ val baseUrl = properties.getProperty("BASE_URL") ?: "http://10.0.2.2:8080/"
+ buildConfigField("String", "BASE_URL", "\"$baseUrl\"")
}
buildTypes {
@@ -38,6 +50,7 @@ android {
}
buildFeatures {
compose = true
+ buildConfig = true
}
}
@@ -74,4 +87,11 @@ dependencies {
androidTestImplementation(libs.androidx.espresso.core)
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)
+
+ //Retrofit & Okhttp
+ implementation(libs.retrofit)
+ implementation(libs.retrofit.converter.gson)
+ implementation(libs.okhttp)
+ implementation(libs.okhttp.logging.interceptor)
+
}
diff --git a/app/src/main/java/com/example/kuit6_android_api/data/api/ApiService.kt b/app/src/main/java/com/example/kuit6_android_api/data/api/ApiService.kt
new file mode 100644
index 0000000..ad8c8bf
--- /dev/null
+++ b/app/src/main/java/com/example/kuit6_android_api/data/api/ApiService.kt
@@ -0,0 +1,20 @@
+package com.example.kuit6_android_api.data.api
+
+import com.example.kuit6_android_api.data.model.response.BaseResponse
+import com.example.kuit6_android_api.data.model.response.PostResponse
+import retrofit2.http.GET
+import retrofit2.http.POST
+import retrofit2.http.Body
+import retrofit2.http.Query
+
+
+interface ApiService {
+ @GET(value = "/api/posts")
+ suspend fun getPosts(): BaseResponse>
+
+ @POST("/api/posts")
+ suspend fun createPost(
+ @Query("author") author: String = "규빈",
+ @Body request: PostCreateRequest
+ ): BaseResponse
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/kuit6_android_api/data/model/request/PostCreateRequest.kt b/app/src/main/java/com/example/kuit6_android_api/data/model/request/PostCreateRequest.kt
new file mode 100644
index 0000000..ce49d8f
--- /dev/null
+++ b/app/src/main/java/com/example/kuit6_android_api/data/model/request/PostCreateRequest.kt
@@ -0,0 +1,9 @@
+package com.example.kuit6_android_api.data.model.request
+
+import kotlinx.serialization.SerialName
+
+data class PostCreateRequest(
+ @SerialName( value = "title" ) val title: String,
+ @SerialName( value = "content" ) val content: String,
+ @SerialName(value = "imageUrl" ) val imageUrl: String?
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/example/kuit6_android_api/data/model/response/AuthorResponse.kt b/app/src/main/java/com/example/kuit6_android_api/data/model/response/AuthorResponse.kt
new file mode 100644
index 0000000..9755f13
--- /dev/null
+++ b/app/src/main/java/com/example/kuit6_android_api/data/model/response/AuthorResponse.kt
@@ -0,0 +1,9 @@
+package com.example.kuit6_android_api.data.model.response
+
+import kotlinx.serialization.SerialName
+
+data class AuthorResponse(
+ @SerialName(value = "id") val id: Long,
+ @SerialName(value = "username") val username: String,
+ @SerialName(value = "profileImageUrl") val profileImageUrl: String?
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/example/kuit6_android_api/data/model/response/BaseResponse.kt b/app/src/main/java/com/example/kuit6_android_api/data/model/response/BaseResponse.kt
new file mode 100644
index 0000000..d883a42
--- /dev/null
+++ b/app/src/main/java/com/example/kuit6_android_api/data/model/response/BaseResponse.kt
@@ -0,0 +1,10 @@
+package com.example.kuit6_android_api.data.model.response
+
+import kotlinx.serialization.SerialName
+
+data class BaseResponse(
+ @SerialName(value = "success") val success: Boolean,
+ @SerialName(value = "message") val message: String?,
+ @SerialName(value = "data") val data: T?,//데이터가 안 올 수도 ?
+ @SerialName(value = "timestamp") val timestamp: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/example/kuit6_android_api/data/model/response/PostResponse.kt b/app/src/main/java/com/example/kuit6_android_api/data/model/response/PostResponse.kt
new file mode 100644
index 0000000..dac12e3
--- /dev/null
+++ b/app/src/main/java/com/example/kuit6_android_api/data/model/response/PostResponse.kt
@@ -0,0 +1,13 @@
+package com.example.kuit6_android_api.data.model.response
+
+import kotlinx.serialization.SerialName
+
+data class PostResponse(
+ @SerialName(value = "id") val id: Long,
+ @SerialName(value = "title") val title: String,
+ @SerialName(value = "content") val content: String,
+ @SerialName(value = "imageUrl") val imageUrl: String?,
+ @SerialName(value = "author") val author: AuthorResponse,
+ @SerialName(value = "createdAt") val createdAt: String,
+ @SerialName(value = "updatedAt") val updatedAt: String
+)
\ No newline at end of file