Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

serviceable

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

serviceable

  • 0.7.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Serviceable

Serviceable aims to reduce code duplication for common patterns, such as JSON/XML API endpoints. Instead of repeating the same patterns in multiple controllers and trying to maintain that over time, we extracted those patterns into a module.

Configuration:

gem 'serviceable'

Controller:

class PostsController < ApplicationController

  include Serviceable
  acts_as_service :post

end

Basic Routes:

resources :posts

Advanced Feature Routes:

resources :posts do
  collection do
    get :count
    get :describe
  end
end

Standard CRUD

POST /posts.json
GET /posts.json
GET /posts/1.json
PUT /posts/1.json
DELETE /posts/1.json

Advanced Features

Retrieve the number of records using the given query params

GET /posts/count.json
86

Use query params to filter the set

GET /posts/count.json?where[posts][author_id]=123
14

Discover the available extensions beyond basic CRUD, such as allowed includes and methods

GET /posts/describe.json
{"allowed_includes":["tags","author"],"allowed_methods":[]}

Query Params

Full listing returned when no query params are given

GET /posts.json
[{"id":1,"title":"First Post!","body":"Feels good to be first","created_at":"20130727T16:26:00Z"}]

Use the only and/or except params to specify fields on the collection

GET /posts.json?only=id,title
[{"id":1,"title","First post!"}]

Use the include param to specify associated objects or collections

GET /posts.json?include=user
[{"id":1,"title":"First Post!","body":"Feels good to be first","created_at":"20130727T16:26:00Z","user":{"id":2,"first_name":"Jim","last_name":"Walker","display_name":"Jim W."}}]

Use the methods param to include the return values from a set of methods on each object

GET /posts.json?methods=max_rating
[{"id":1,"title":"First Post!","body":"Feels good to be first","created_at":"20130727T16:26:00Z","max_rating":3}]

Combine params to configure the result contents

GET /posts.json?only=id,title&include[user][only]=first_name,last_name
[{"id":1,"title":"First Post!","user":{"first_name":"Jim","last_name":"Walker"}}]

Filter Params

Use the where param to filter the results

GET /posts.json?where[posts][published]=true

Use associated objects or collections to filter the set

GET /posts.json?where[tags][label]=Pinball

Integrating with jQuery

Working with a serviceable endpoint is easy with jQuery. Here's an example of a request for all posts tagged as "Pinball" including only post id and title:

$.ajax({
  url: '/posts.json',
  type: 'GET',
  data: {
    where: {
      tags: {
        label: 'Pinball'
      }
    },
    only: 'id,title'
  },
  success: function(xhr,msg,data) {
    console.log("received "+data.responseJSON.length+" results");
  }
});

FAQs

Package last updated on 22 Oct 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc