Skip to content

API calls

Mojtaba Razaghi edited this page Sep 30, 2019 · 4 revisions

RequestModel for Request body
ResponseModel for Response body

These methods are for all type of request methods :

  • 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

ResponseHandler overrides:

  • 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

POST

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)
    }

GET

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)

PUT

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()

PATCH

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()

DELETE

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()

MULTIPART

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()

Retrofit Helper Documentation

Clone this wiki locally