Spring data rest презентация

Содержание

Слайд 2

Features Provides rest api for domain model using HAL. Supports pagination. Allows to define projections.

Features

Provides rest api for domain model using HAL.
Supports pagination.
Allows to define

projections.
Слайд 3

What is HATEOAS? HATEOAS is a concept of application architecture.

What is HATEOAS?

HATEOAS is a concept of application architecture. It defines

the way in which application clients interact with the server, by navigating hypermedia links they find inside resource models returned by the server.
A core principle of HATEOAS is that resources should be discoverable through the publication of links that point to the available resources.
Слайд 4

What is HAL? HAL = Hypertext Application Language. HAL is

What is HAL?

HAL = Hypertext Application Language.
HAL is a generic media

type with which Web APIs can be developed and exposed as series of links.
MediaType = "application/hal+json"
Слайд 5

What is HAL? GET /orders/523 HTTP/1.1 Host: example.org Accept: application/hal+json

What is HAL?

GET /orders/523 HTTP/1.1 Host: example.org Accept: application/hal+json HTTP/1.1 200

OK Content-Type: application/hal+json { "_embedded" : { "transactions" : [ { ... } ] }, "_links" : { "first" : { "href" : "http://localhost:8080/api/transactions?page=0&size=20" }, …
}, "page" : { "size" : 20, "totalElements" : 26, "totalPages" : 2, "number" : 0 } }
Слайд 6

Dependency org.springframework.boot spring-boot-starter-data-rest

Dependency


org.springframework.boot
spring-boot-starter-data-rest

Слайд 7

RepositoryRestConfigurer @Bean public RepositoryRestConfigurer repositoryRestConfigurer() { return new RepositoryRestConfigurerAdapter() {

RepositoryRestConfigurer

@Bean
public RepositoryRestConfigurer repositoryRestConfigurer() {
return new RepositoryRestConfigurerAdapter() {
@Override
public void

configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.setBasePath("/api");
}
};
}
Слайд 8

RepositoryRestConfigurer properties basePath defaultPageSize maxPageSize pageParamName limitParamName sortParamName defaultMediaType e.t.c.

RepositoryRestConfigurer properties

basePath
defaultPageSize
maxPageSize
pageParamName
limitParamName
sortParamName
defaultMediaType
e.t.c.

Слайд 9

Example @RepositoryRestResource public interface UserRepository extends JpaRepository {}

Example

@RepositoryRestResource
public interface UserRepository extends JpaRepository {}

Слайд 10

Supported http methods GET POST PUT DELETE HEAD OPTIONS

Supported http methods

GET
POST
PUT
DELETE
HEAD
OPTIONS

Слайд 11

User @Entity public class User { @Id @GeneratedValue private long

User

@Entity
public class User {
@Id @GeneratedValue
private long userId;
private String username;
private int age;
...getters/setters
}

Слайд 12

How to access repository? The path is derived from the

How to access repository?

The path is derived from the uncapitalized, pluralized,

simple class name of the domain class being managed.
User -> …/users
…/users/3
Слайд 13

GET request …/users // find all users using default pagination.

GET request

…/users // find all users using default pagination. Returns first

page
…/users?page=1 // find all users using default pagination. Returns second page
…/users?size=2 // find all users using pagination by 2. returns first page.
Слайд 14

POST request …/users body: { “username” : “test”, “age” : “1” }

POST request

…/users
body:
{
“username” : “test”,
“age” : “1”
}

Слайд 15

PUT request …/users/1 body: { “username” : “test”, “age” : “1” }

PUT request

…/users/1
body:
{
“username” : “test”,
“age” : “1”
}

Слайд 16

DELETE request …/users/1

DELETE request

…/users/1

Слайд 17

Custom database query @RepositoryRestResource public interface UserRepository extends JpaRepository { Collection findByAge(@Param(“age”) int age); }

Custom database query

@RepositoryRestResource
public interface UserRepository extends JpaRepository {
Collection findByAge(@Param(“age”) int

age);
}
Имя файла: Spring-data-rest.pptx
Количество просмотров: 138
Количество скачиваний: 0