An promise call adapter for revival.


Keywords
revival, adapter, restful, typescript, xmlhttprequest
License
MIT
Install
npm install revival-adapter-promise@1.0.0

Documentation

Revival

A RESTful http client for react native and typescript based on XMLHttpRequest.

Installation and Usage

  • Revival only support typescript cause it uses decoratos:
npm install revival

or

yarn add revival
  • Add "experimentalDecorators": true and "emitDecoratorMetadata": true in tsconfig.json.

  • Create api in your project as below:

import { DUMMY, GET, Path } from "revival"

class MyApi {
  @GET("user/{id}")
  loadAccount(@Path("id") id: string) : Call<Account> {
    return DUMMY;
  }
}
  • Revival will turns all decorators to http request:
let revival: Revival = new RevivalBuilder()
  .baseUrl("http://test.com/")
  .addInterceptor(new LogInterceptor())
  .build();

let myapi = revival.create(MyApi);
  • Then you can call the api with asynchronous mode(with enqueue):
let Call<Account> = myapi.loadAccount("Vincent");
  • Revival supports GET, POST, PUT, PATCH, DELETE, HEAD.
  • Request url can be set dynamically with @Path, and the path must surrounded by { and }:
  @GET("user/{id}")
  loadAccount(@Path("id") id: string) : Call<Account> {
    return DUMMY;
  }

Query parameter can be added with @Query:

@GET("user/{id}")
  loadAccount(@Path("id") id: string, @Query("type") type: string) : Call<Account> {
    return DUMMY;
  }

For complex query parameters, you can use a object with @QueryMap:

@GET("user/{id}")
loadAccount(@Path("id") id: string, @QueryMap user: User) : Call<Account> {
    return DUMMY;
  }
  • An object can be used as a http request body with @Body:
@POST("user/new")
createUser(@Body user: User) : Call<Account> {
  return DUMMY;
}
  • Methods can also be declared to send form-encoded(wtth @FormUrlEncoded) and multipart(with @Multipart) data:
@FormUrlEncoded
@POST("user/update")
updateAccount(@Field("age") age: number, @Field("email") email: string) {
  return DUMMY;
}

@Multipart
@PUT("user/update")
updateAccount(@Part("avatar") avatar: Avatar, @Part("name") name: string) {
  return DUMMY;
}
  • Revival will use json to serialize and parse body by default, if you want to convert to something else like xml, you can implement a ConverterFactory to serialize and parse body. Use them as below:
let revival: Revival = new RevivalBuilder()
  .baseUrl("http://test.com/")
  .converterFactory(new XmlConvertFactory())
  .build();

If you just want a ReviResponse, you must add @Raw:

@Raw
@POST("user/password")
createPassword(@Body password: Password) : Call<ReviResponse> {
  return DUMMY;
}
  • Revival supports call adapter which will turn Call to rxjs, promise, you can install them via:
npm install revival-adapter-rxjs revival-adapter-promise

or

yarn add revival-adapter-rxjs revival-adapter-promise

And use them as below:

let revival: Revival = new RevivalBuilder()
  .baseUrl("http://test.com/")
  .addCallAdapter(RxjsCallAdapter.create())
  .addCallAdapter(PromiseCallAdapter.create())
  .build();

Credits

  • Retrofit - Type-safe HTTP client for Android and Java by Square, Inc.
  • Angular/http - One framework. Mobile & desktop.

License

	MIT License

	Copyright (C) 2017-present Vincent Cheung

	This source code is licensed under the MIT license found in the
	LICENSE file in the root directory of this source tree.