SB NAL Flashcards

1
Q

Ao criar um novo projeto Spring, qual dependência provê recursos para criação de um backend restful?

A

Web / Spring Web

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qual a nomenclatura padrão para um controlador rest?

A

NomeEntidadeResource dentro de main/java/resources

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quais anotações vão em uma classe controladora rest?

A

@RestController e @RequestMapping(value=”/entidades”)

Caso URI tenha mais de uma palavra, utilizar kebab-case

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qual anotação vai num método endpoint rest?

A

@RequestMapping(method=RequestMethod.GET)

… ou POST

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

O que deve ser criado durante a implementação de uma nova entidade?

A

Atributos, associações (se coleção inicializar), construtores sem coleções, getters e setters, hashCode e equals, serializable padrão

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Em qual pacote vão as classes de domínio?

A

main/java/domain

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quais são as anotações básicas para o mapeamento OR / JPA de uma entidade?

A

@Entity (javax) no class

@Id @GeneratedValue(strategy=GenerationType.IDENTITY) no id

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quais são as chaves (chave-valor) básicas no application-properties?

A

spring. datasource. (url,username,password)

spring. jpa. (show-sql, properties.hibernate.format_sql)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Como se organizam as camadas numa aplicação restful?

A

Frontend &laquo_space; &raquo_space; Controladores rest (resource) -instancia-> Serviço (service) -instancia-> DAO (repo)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Em qual pacote vão as classes de acesso a dados?

Qual o padrão de nomenclatura?

A

main/java/repositories

NomeEntidadeRepository

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Qual anotação básica deve conter uma interface de acesso a dados? Qual classe deve estender?

A
@Repository
(também troca de class para interface e estende JpaRepository )
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qual a nomenclatura padrão para um serviço rest?

A

NomeEntidadeService dentro de main/java/services

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quais anotações vão em uma classe service rest?

A

@Service

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Quando alguém dá post em um novo resource, que resposta o endpoint deve dar?

A

Uma response 201 CREATED e o link para recuperar/get o recurso recém criado.
Não sendo possível dar o link, uma resposta 202 ACCEPTED apenas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Considerando que o método repo.save(obj) do spring data serve tanto para salvar como atualizar, como garantir que a operação será um save ou update?

A

No service, antes do repo.save(obj) setar o id do obj para nulo quando quiser salvar, ou garantir que o id seja existente quando quiser atualizar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

É aconselhável evitar o uso de try/catch nas classes resource/controller. O quê fazer então?

A

Utilize @ControllerAdvice @ExceptionHandler numa classe ResourceExceptionHandler

17
Q

Considere o exemplo: Ao consumir o endpoint /categorias a resposta traz também uma coleção de produtos dentro de cada categoria. Como evitar isso sem utilizar JSON Ignore?

A

Adotando o padrão DTO, no qual seria criado um DTO específico (uma projeção) de categoria no qual não constaria nenhum produto.

18
Q

Como converter objetos para objetoDTO de maneira prática?

A
Criando um construtor no ObjetoDTO que receba o Objeto como parâmetro.
No controlador list.stream().map(obj -> new ObjDTO(obj))
19
Q

Considere um endpoint buscarPagina(Integer pagina)

Qual anotação deve ser utilizada para esperar que a página venha como parâmetro opcional na URL?

A

@RequestParam(value=”pagina”, defaultValue=”0”) Integer pagina

20
Q

Bean validation é útil em quais tipos de requisição?

A

POST e PUT

21
Q

Considere uma entidade pessoa. Como fazer validação sintática para que o nome não possa ser vazio e tenha mais que 2 caracteres?

A

Na entidade.
@NotEmpty(message=”Preenchimento obrigatório.”)
@Length(min=2, message=”Nome inválido.”)

No parâmetro do endpoint.
@Valid

22
Q

Quais os passos para tratar uma exceção retornada crua na requisição?

A

Inclua a exceção específica no ResourceExceptionHandler e retorne uma ResponseEntity

23
Q

Como implementar uma busca por campo?

A
Na interface repository
Entidade findByNomeCampo(String parametro);
24
Q

Qual é o tipo padrão retornado por um endpoint?

A

ResponseEntity< >

25
Q

Quais dependências são necessárias para trabalhar com JWT?

A

spring-boot-starter-security

io.jsonwebtoken

26
Q

A classe de configuração do JWT deve herdar qual classe?

A

SecurityConfig extends WebSecurityConfigurerAdapter

27
Q

Quais anotações devem conter no arquivo de configuração do JWT?

A

@Configuration

@EnableWebSecurity

28
Q

Como liberar uma URL para acesso sem validação?

A

Na classe que estende WebSecurityConfigurerAdapter:
String[] PUBLIC_MATCHERS = {“/url-um/”, “/url-dois/”}

Sobrescreve configure:
http.authorizeRequests().antMatchers … permitAll()

29
Q

Como liberar acesso de múltiplas fontes? (cross origin)

A
Na classe que estende WebSecurityConfigurerAdapter:
@Bean
CorsConfigurationSource ccs() { ... }
30
Q

Qual classe deve ser implementada para gerenciar usuários com spring security?

A

class UsuarioSpring implements UserDetails { … }