A RESTful http client for react native and typescript based on XMLHttpRequest.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
packages
samples
test
.gitignore
LICENSE
README.md
lerna.json
package.json
tsconfig.json
tslint.json

README.md

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.