Medium badge

JSON API Rails Public

Team Badge List

Badge holders have demonstrated a working understanding of the JSON API RB / Rails gems.

Required Evidence

Challenge

Solve this learning challenge by posting code snippets. More Info

Learning Resources

Share the learning resources which were the most useful to you during your process. More Info

Badge Overview

Pre-Requisites & Context

You should definitely complete the JSON API badge (https://www.badgelist.com/team/json-api-v1) before starting this one. The JSON API Rails gem (which also includes elements of other gems from the JSON API RB collection of gems) is the toolset which Badge List uses in order to serialize Rails models and generate JSON responses in a way that is compliant with the JSON API specification.

Note 1: The JSON API Rails gem isn't actually that great. There are some wonky design decisions that have been made by the gem managers. And in fact, we are not using JSON API RB's Deserialization library because it had tons of issues that prevented it from working for our use case. We may eventually move away from using this gem altogether, but for now it abstracts away a lot of complexity when it comes to serialization and deserialization. It also adds some complexity, but the complexity lost is much greater than the complexity gained.

Note 2: We've got a significant amount of custom DSL (domain-specific language) built up on top of the JSON API gems. That means that it's especially important to understand how the JSON API gems work in their vanilla state, otherwise you'll be completely lost when you get to Badge List's implementation.

How to earn this badge

  1. Learn about the JSON API gems. Refer to #Learning-Resources to get started.
  2. Solve the #Challenge
  3. Post the resources which were helpful in your own learning journey back to #Learning-Resources
  4. Request feedback

Badge Experts

 

Quentin Guillaume

Couentine

Badge awarded on 12/28/18

Badge Learners

 

Christophe Alain Pagnusatt Rochester

CPR

Joined badge on 6/26/19