Aprenda a criar uma aplicação completa com Ruby on Rails API-only.
- Criar uma aplicação completa com Ruby on Rails API-only.
- Conhecer o Active Model Serializer.
- Usar a especificação JSON:API em toda a aplicação desenvolvida.
- Fazer Paginação com Rails API.
- Versionar uma aplicação Rails API.
- Fazer autenticação com Token, JWT e Devise.
- Usar Cache para as aplicações Rails API.
- Conhecer sobre Rack Middleware.
- Usar TDD no desenvolvimento de uma aplicação Rails API.
URL do curso -> Desenvolvendo REST / RESTful APIs com Ruby on Rails
Explicação do Código de cada capítulo dentro dos commits.
- Criar uma entidade digitando
rails g scaffold ENTITY ATTRIBUTES
. - Rodar o projeto com
rails s
. - Realizar uma migration com
rails db:migrate
. - Listar todas as tarefas com
rails -T
. - Gerar uma tarefa com
rails g task TASK_NAME
. - Rodar uma tarefa com
rails TASK_NAME
.
- Setar o Status Code de uma resposta de uma requisição HTTP.
- Configurar o projeto para ser compilado toda vez que haver mudança no código com
config.file_watcher = ActiveSupport::FileUpdateChecker
. - Setar parâmetros para a resposta da requisição:
root: true
: Enviar o tipo do objeto.only: [:name, :email]
: Enviar somente X atributos.except: [:name, :email]
: Enviar exceto X atributos.
- Adicionar atributos extras com:
render json: @contacts.attributes.merge({ author: "Jackson" })
- Adicionar métodos:
render json: @contacts, methods: :author
- Redefinir a exibição JSON com
class X
def as_json
...
end
end
- Gerar um objeto que é referenciado em outro objeto com
rails g scaffold Kind description:string
. - Criar uma migration com
rails g migration add_kind_to_contact kind:references
, onde okind:references
diz que vai ser criado um novo atributo que referencia outro objeto.
IMPORTANTE! É necessário primeiro criar o objeto no qual vai ser referenciado, e só depois criar uma migration referenciando o objeto.
- Resetar o banco com o comando
rails db:drop db:create db:migrate dev:setup
.
No Windows, é necessário executar o "db:drop" como "db:drop:_unsafe".
- Realizar a associação na classe que vai referênciar outro objeto.
- Formatar JSON no corpo do response.
- Deixar um objeto de dependência através do JSON no POST opcional.
- Permitir valores nulos excluindo o parâmetro
null: false
no db/schema.rb. - Permitir outros parâmetros adicionando no arquivo de controller da classe.
- Definir o Locale da aplicação.
- Listar atributos de acordo com o Locale do I18n.
- Criar um nova entidade sem rota de API com
rails g model ENTITY ATTRIBUTES ATTRIBUTE:references
. - Criação da nova classe
Phone
. - Associar um
Contact
em umPhone
.
- Fazer a impressão dos valores JSON informando parâmetros e usando métodos com relação ao I18n que sobrescrevem o JSON.
- CRUD de uma entidade com objetos aninhados.
_destroy
.- pry-rails para facilitar na leitura pelo console.
- Criação do
Address
. - Não permitir a criação de um novo dado atrelado à um objeto com
update_only: true
.
- Requisições só serem aceitas caso o retorno seja do tipo JSON.
- Achar o
Kind
através de umContact
. - Criação de relacionamentos e rotas do
belongs_to
. - Criação de relacionamentos e rotas do
has_many
. - Criação de relacionamentos e rotas do
has_one
.
- Criação de rotas para o
Address
.
- Criação de rotas para CRUD do
Phone
de um contato.
- Criar um controller com
rails g controller auths
. - Codificar/Decodificar os dados de uma requisição com JWT.
- Primeiro registrar o user com uma requisição POST na URL: http://localhost:3000/auth enviando como corpo da requisição:
{
"email": "volax@gmail.com",
"password": "12345678",
"password_confirmation": "12345678"
}
- Depois logar com uma requisição POST na URL: http://localhost:3000/auth/sign_in enviando como corpo da requisição:
{
"email": "volax@gmail.com",
"password": "12345678"
}
- Nos Headers da resposta, vai aparecer access-token, client e uid, ao solicitar uma requisição, essas variáveis devem estar no Headers da requisição que está sendo feito para validação do usuário.
- Versionar através da URL.
- Versionamento através de pastas de versões.
- Versionar a partir dos recursos de uma Gem.
- Versionar os sub-modelos.
- Especificar a versão antes do recurso na URL
- Usar a biblioteca kaminari para paginação de dados.
- Controlar que página será acessada.
- Controlar quantos dados cada página vai ter.
- Setar um tempo de expiração do cache.
- Definir uma ETag.