#post #json-api #model #title #find #article #println

jplaceholder

A Rust library for the JSON Placeholder API

5 releases (stable)

Uses old Rust 2015

1.5.1 Aug 28, 2018
1.0.1 Aug 26, 2018
0.1.0 Aug 26, 2018

#14 in #println

MIT license

13KB
163 lines

Jplaceholder

Build Status

A Rust library for the JSON Placeholder API Documentation: https://docs.rs/jplaceholder/1.0.1/jplaceholder/

Table of Contents

Example:

extern crate jplaceholder;
use jplaceholder::Model;
use jplaceholder::Post;

match Post::find(2) {
    Some(post) => println!("Title of the article {}: {}", post.id, post.title),
    None => println!("Article not found!")
}

Installation

To install the library, you just have to put it into your Cargo.toml file:

jplaceholder = "1.0.1"

Then, require the library into your main file.

extern crate jplaceholder;

Usage

The model trait

The model trait provides usefull methods to interact with the resources.

Implementations

  • Post
  • User

fn find(id: i32) -> Option;

Finds a resource by its ID

Example:

use jplaceholder::Model;
use jplaceholder::Post;

match Post::find(2) {
    Some(post) => println!("Title of the article {}: {}", post.id,      post.title),
    None => println!("Article not found!")
}

fn all(id: i32) -> Option;

Gets all of the resources

Example:

use jplaceholder::Model;
use jplaceholder::Post;

let posts: Vec<Post> = Post::all();
for post in posts {
    println!("The title of the post {} is: {}", post.id, post.title)
}

fn create() -> Vec;

Creates a new resource

Example:

use jplaceholder::Model;
use jplaceholder::Post;

let post = Post{id: 5, title: String::from("Hey"), body: String::from("hehe"), user_id: 5};
Post::create(post);

Relationships

Relationships let you interact between models. Let's say that I get the first user like this:

use jplaceholder::Model;
use jplaceholder::User;
use jplaceholder::Post;

let user = match User::find(1) {
    Some(u) => u,
    None => panic!("user not found")
};

Now, if I want to get all of the articles posted by this user:

// .......
let posts: Vec<Post> = user.posts().expect("This user has posted no article");
println!("{} posted {} articles", user.name, posts.len());

And conversely, if I want to get the user that posted an article:

use jplaceholder::Model;
use jplaceholder::Post;

if let Some(post) = Post::find(1) {
    match post.user() {
        Some(user) => println!("{} has posted this article", user.name),
        None => println!("Author not found")
    }
}

Contribution guide

  1. Fork and Clone the repository
  2. Create your own branch
  3. Start Coding!
  4. Make a pull request when you're done :)

Dependencies

~15–24MB
~422K SLoC