본문 바로가기

스파르타코딩클럽(내일배움캠프)

스파르타 코딩 클럽 4주차 2일

728x90

[알고리즘]

 

[강의]

네트워킹 retrofit, OpenAPI

 

1. http와 api

 

http : 통신을 하기위한 약속

api : 데이터를 주고받기 위한 약속

 

gradle에 디팬던시에 아래 추가

implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.google.code.gson:gson:2.8.5'

 

쿼리 스트링

url 주소에 ?는 쿼리스트링을 작성하겠다는 신호입니다. 쿼리스트링은 사용자가 입력 데이터를 전달하는 방법중 하나입니다. 아래 주소는 쿼리스트링으로 작성했고 page라는 키와 2라는 벨류로 나타냅니다.

https://reqres.in/api/users?page=2

 

Main.java

import retrofit2.Call;

import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        Call<Object> retrofitTest = RetrofitClient.getApi().retrofitTest(2);//우리는 2페이지를 확인할 것이기 때문에 2를 삽입하겠습니다.
        //Call은 retrofit라이브러리의 인터페이스이며 서버에서 응답하는 값을 담는 역할을 합니다.
        try {
            System.out.println(retrofitTest.execute().body());//서버에서 받은 데이터를 확인해보겠습니다.
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

RetrofitClient

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {
    private static final String BASE_URL = "https://reqres.in/";
    //BASE_URL에는 변하지 않는 URL주소를 입력해 주면 됩니다. 데이터의 위치에 따라 변하지 않는 주소를 말이죠.

    public static RetrofitService getApi() {
        return getInstance().create(RetrofitService.class);
    }//getInstance 메소드를 통해 인스턴스를 반환하게됩니다.

    private static Retrofit getInstance() {
        Gson gson = new GsonBuilder()
                .setLenient()
                .create();//통신을 할 때 JSON 사용 및 해당 객체로의 파싱을 위해 생성합니다.
        return new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();//서버에서는 JSON으로 응답하므로 우리는 build.gradle에 설정한 gson을 이용합니다.
    }
}

 

RetrofitService

 

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;

public interface RetrofitService {
    @GET("/api/users/")
    Call<Object> retrofitTest(@Query("page") int page);
}
//@Query는 Retrofit 라이브러리를 이용할 때 쿼리스트링을 입력하는 방법입니다.
//이렇게 파라미터 변수로 작성해놓으면 함수를 호출할 때 파라미터를 바꿔가며 원하는 페이지를 조회할 수 있습니다.

 

build.gradle

plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'org.apache.commons:commons-lang3:3.0'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}

test {
    useJUnitPlatform()
}

객체지향 문제 풀어보기

 

카페 시스템

  • 요구사항
    • 고객은 음료 주문할 수 있다.
    • 음료는 아이스아메리카노(1000원), 라떼(1500원), 밀크티(2000원), 밀크쉐이크(3000원), 캐모마일(4000원)이 있다.
    • 직원은 주문 받은 음료를 제조한다.

추가

  • 카페의 매출 금액을 알 수 있다.
  • 고객은 주문 시, 금액을 지불해야한다.
  • 고객이 가진 돈 보다 높은 금액의 음료는 주문할 수 없다.
  • 고객이 음료를 마시면 음료는 줄어든다.
728x90