-
Notifications
You must be signed in to change notification settings - Fork 1
API calls
Mojtaba Razaghi edited this page Sep 30, 2019
·
4 revisions
RequestModel for Request body
ResponseModel for Response body
- setPath("path") : sets the path of the request
- setBaseUrlKey("key") for key-value urls that had been set in Application class
- addHeader("key","value") : add headers to request
- setBody(RequestModel()) : sets the request body
- setUrlParams("key","value") : sets the URL Parameters Key-Value, HashMap
- setResponseHandler(ResponseModel::class.java, object : ResponseHandler(){overrides}) : handle API response
- onBeforeSend():
runs before making a request, it's good for showing loading and etc.
- onSuccess():
runs when response code is 2**.
- onError():
runs when response code is NOT 2**, handle server errors here.
- onComplete():
runs after request even when it fails, it's good for stopping loading and etc.
- onFailed():
runs on an error, either in code or broken network connection
Sample POST
request:
retrofitClient.Post<PostRequestModel, PostResponseModel>()
.setPath("api/users")
//set headers Key-Value or HashMap
// .setRequestHeader()
//set url params Key-Value or HashMap
// .setUrlParams()
.setBody(PostRequestModel("morpheus", "leader"))
.setResponseHandler(PostResponseModel::class.java,
object : ResponseHandler<PostResponseModel>() {
override fun onSuccess(response: Response<PostResponseModel>) {
super.onSuccess(response)
//handle response
log.text = response.body.toString()
}
override fun onBeforeSend() {
super.onBeforeSend()
}
override fun onError(response: Response<PostResponseModel>?) {
super.onError(response)
}
override fun onFailed(e: Throwable?) {
super.onFailed(e)
}
override fun onComplete() {
super.onComplete()
}
})
//DO NOT FORGET TO CALL .run()
.run(this)
}
Sample GET
request:
retrofitClient.Get<GetResponseModel>()
.setPath("api/users/2")
//set url params Key-Value or HashMap
.setUrlParams("KEY","Value")
.setResponseHandler(GetResponseModel::class.java,
object : ResponseHandler<GetResponseModel>() {
override fun onSuccess(response: Response<GetResponseModel>) {
super.onSuccess(response)
log.text = response.body.toString()
}
}).run(this)
Sample PUT
request:
retrofitClient.Put<PutRequestModel, PutResponseModel>()
.setPath("api/users/2")
//set headers Key-Value or HashMap
// .setRequestHeader()
//set url params Key-Value or HashMap
// .setUrlParams()
.setBody(PutRequestModel("morpheus","zion resident"))
.setResponseHandler(PutResponseModel::class.java,object : ResponseHandler<PutResponseModel>(){
override fun onSuccess(response: Response<PutResponseModel>) {
super.onSuccess(response)
log.text = response.body.toString()
}
})
.run()
Sample PATCH
request:
retrofitClient.Patch<PatchRequestModel, PatchResponseModel>()
.setPath("api/users/2")
//set headers Key-Value or HashMap
// .setRequestHeader()
//set url params Key-Value or HashMap
// .setUrlParams()
.setBody(PatchRequestModel("morpheus","zion resident"))
.setResponseHandler(PatchResponseModel::class.java,
object : ResponseHandler<PatchResponseModel>() {
override fun onSuccess(response: Response<PatchResponseModel>) {
super.onSuccess(response)
log.text = response.body.toString()
}
}).run()
Sample DELETE
request:
retrofitClient.Delete<DeleteResponseModel>()
.setPath("api/users/2")
//set headers Key-Value or HashMap
// .setRequestHeader()
//set url params Key-Value or HashMap
// .setUrlParams()
.setResponseHandler(DeleteResponseModel::class.java,
object : ResponseHandler<DeleteResponseModel>() {
override fun onSuccess(response: Response<DeleteResponseModel>) {
super.onSuccess(response)
log.text = "Deleted Successfully"
}
}).run()
Sample MULTIPART
request:
//Create a file object using file path
val file = File(filePath)
// Create a request body with file and image media type
val fileReqBody = RequestBody.create(MediaType.parse("image/*"), file)
// Create MultipartBody.Part using file request-body,file name and part name
val part = MultipartBody.Part.createFormData("upload", file.name, fileReqBody)
retrofitClient.MultiPart<MultiPartResponseModel>()
.setPath("")
.setPart(part)
.setUrlParams("type","image")
.setRequestHandler(MultiPartResponseModel::class.java,object :ResponseHandler<MultiPartResponseModel>(){
override fun onSuccess(response: Response<MultiPartResponseModel>) {
super.onSuccess(response)
//success
}
}).run()