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..92c84d3 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,3 +1,5 @@
+import java.util.Properties
+
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
@@ -17,7 +19,13 @@ android {
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
-
+ 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 +46,7 @@ android {
}
buildFeatures {
compose = true
+ buildConfig = true
}
}
@@ -74,4 +83,9 @@ dependencies {
androidTestImplementation(libs.androidx.espresso.core)
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)
+
+ 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..dbe79b4
--- /dev/null
+++ b/app/src/main/java/com/example/kuit6_android_api/data/api/ApiService.kt
@@ -0,0 +1,51 @@
+package com.example.kuit6_android_api.data.api
+
+import com.example.kuit6_android_api.data.model.request.PostCreateRequest
+import com.example.kuit6_android_api.data.model.response.BaseResponse
+import com.example.kuit6_android_api.data.model.response.PostResponse
+import okhttp3.MultipartBody
+import retrofit2.http.Body
+import retrofit2.http.DELETE
+import retrofit2.http.GET
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.PUT
+import retrofit2.http.Part
+import retrofit2.http.Path
+import retrofit2.http.Query
+
+interface ApiService {
+ @GET("/api/posts")
+ suspend fun getPosts(): BaseResponse>
+
+ @POST("/api/posts")
+ suspend fun createPost(
+ @Query("author") author: String = "예원",
+ @Body request: PostCreateRequest
+ ): BaseResponse
+
+ // DELETE 요청
+ @DELETE("/api/posts/{id}")
+ suspend fun deletePost(
+ @Path("id") id: Long
+ ): BaseResponse // data에 빈 객체 반환
+
+ @GET("/api/posts/{id}")
+ suspend fun getPostDetail(
+ @Path("id") id: Long
+ ): BaseResponse
+
+ // 업데이트 요청
+ @PUT("/api/posts/{id}")
+ suspend fun updatePost(
+ @Path("id") id: Long,
+ @Body request: PostCreateRequest // 수정된 내용 전달
+ ): BaseResponse // 수정된 내용이 data에 들어가고, 반환
+
+ // Retrofit에서 이미지 파일을 multipart/form-data로 업로드
+ @Multipart // multipart?form-data 형식의 요청을 보냄
+ @POST("/api/images/upload")
+ suspend fun uploadImage(
+ @Part file: MultipartBody.Part // multipart의 한 조각(part) 타입
+ ):BaseResponse