android studio Retrofit을 이용하여 Header에 Authorization토큰을 추가해서 서버에 보내기
이전글 : android studio Retrofit을 이용한 POST요청
헤더에 토큰("Authorization")을 추가해서 보낼수있습니다.
interface RequestUser{
// Get요청을 주는 주는 주소는 /api/users/{유저ID}
@GET("/api/users/{uid}")
// Call은 해당 API를 요청시 서버에서 받을수 있는 데이터 양식(JSON)을 정의해 준다. UserSingleData대로 서버에서 응답이 온다.
// 변수 uid는 @GET요청의 {uid}와 연결하기 위해서 앞단에 @Path("uid")를 추가하여 요청시 해당 uid값이 바르게 입력되도록 한다.
// @Header추가하고 "Authorization"에 대한 헤더를 만든다. 해당 헤더는 String값이 들어가기 때분에 아래처럼 코드를 수정한다.
Call<UserSingleData> getOneUser(@Header ("Authorization") String authToken, @Path("uid") int uid);
// Post요청을 주는 주소는 /api/users
@POST("/api/users")
Call<UserGetOneRecord> postOneUser(@Body UserInsertOneRecord users);
}
Get요청을 할때 헤더에 토큰을 넣어서 요청한다.
// 버튼을 클릭하면 발생할 이벤트 작성
sendGetRequestBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = Integer.parseInt(inputUserId.getText().toString());
// JWT토큰은 헤더의 첫 부분에 Bearer(한칸 공백) 먼저 추가하고 뒤에 토큰을 넣습니다.
String token = "Bearer " + "testToekn";
// GET요청할때 Header에 토큰(token)을 넣고 서버에 요청을 한다.
requestUser.getOneUser(token, uid).enqueue(new Callback<UserSingleData>() {
@Override
public void onResponse(Call<UserSingleData> call, Response<UserSingleData> response) {
// 정상적으로 응답을 받을시
responseData.setText("first name : "+response.body().data.first_name + "\n" + "last name : " + response.body().data.last_name);
}
@Override
public void onFailure(Call<UserSingleData> call, Throwable t) {
// 에러 발생시
responseData.setText(t.getMessage());
}
});
}
});
위 API에서는 토큰이 필요 없지만 그럼에도 불구하고 토큰을 넣어서 보낼수 있습니다.
gitHub : https://github.com/Alex-Choi0/android_excercise_api_request/tree/header_add_authorization
댓글
댓글 쓰기