design e boas práticas de api's com csharp

27
Design e boas práticas de APIs com C# @rodolfofadino

Upload: rodolfo-fadino-junior

Post on 23-Jan-2018

283 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Design e boas práticas de api's com CSharp

Design e boas práticas de APIs com C#@rodolfofadino

Page 2: Design e boas práticas de api's com CSharp
Page 3: Design e boas práticas de api's com CSharp
Page 4: Design e boas práticas de api's com CSharp

2010Central do assinante

ASP.NET MVCjQuery

Angular

Page 5: Design e boas práticas de api's com CSharp
Page 6: Design e boas práticas de api's com CSharp

{APIS}

{pagamento} {programa}

{tokenissuer}

{social}

230.000.000 req/mês

{prediction}

Page 7: Design e boas práticas de api's com CSharp

arquitetura infra

Page 8: Design e boas práticas de api's com CSharp

Consistência

Page 9: Design e boas práticas de api's com CSharp

Do:

Use GETs para retornar dados.

Use PUTs/POSTs para alterar dados.

Use a mesma estrutura de endpoints em toda api.

Escolha alguns status code para utilizar e manter a consistência em toda api.

Don’t:

Use status code de uma maneira não esperada. Se você irá retornar uma lista de posts, não retorne um 404 caso não exista nenhum post, retorne uma lista vazia.

Use GETs para alterar dados ou PUTs/POSTs para somente retornar dados.

Mensagens de erro para descrever condições.

Consistência

Page 10: Design e boas práticas de api's com CSharp

Endpoints: Recursos / VERBOS

GET /posts

GET /posts/123

POST /posts

versusGET /getAllPosts

GET /getPostById

POST /createPost

Page 11: Design e boas práticas de api's com CSharp

VERBOS HTTP

GET /posts - Lista de posts

GET /posts/12 - Post especifico

POST /posts - Cria um novo post

PUT /posts/12 - Atualiza o post #12

PATCH /posts/12 - Atualiza parcialmente o post #12

DELETE /posts/12 - Remove o post #12

Page 12: Design e boas práticas de api's com CSharp

Ações diferentes de um CRUD

Curtir um post

PUT /posts/:id/like

DELETE /posts/:id/like

Favoritar um post

PUT /posts/:id/star

DELETE /posts/:id/start

Page 13: Design e boas práticas de api's com CSharp

Status Code

https://http.cat/

Page 14: Design e boas práticas de api's com CSharp

Status Code

200 OK - Resposta de sucesso de um GET, PUT, PATCH ou DELETE. Pode ser utilizado para um POST que não crie uma entidade.

201 Created - Resposta para um POST que cria uma entidade. Pode ser combinado com um header location

204 No Content - Resposta de uma request que teve sucesso, que não possua retorno (DELETE request)

304 Not Modified - HTTP caching headers

400 Bad Request - Request mal formada

401 Unauthorized - Autenticação inválida.

403 Forbidden - Quando a autenticação funciona, mas o usuário não tem acesso ao recurso.

404 Not Found - Quando aquele recurso não existe

405 Method Not Allowed - Quando um verbo HTTP está sendo utilizado por um usuário que não tem a permissão (DELETE por exemplo)

429 Too Many Requests - Rate limite

Page 15: Design e boas práticas de api's com CSharp

Versionamento

api_v{version}.dominio.com.br/subscription/users

api_v{version}.dominio.com.br/social/posts

api.dominio.com.br/v{version}/subscription/users

api.dominio.com.br/v{version}/social/users

api.dominio.com.br/subscription/v{version}/users

api.dominio.com.br/social/v{version}/posts

api.dominio.com.br/subscription/users/v{version}/

api.dominio.com.br/social/posts/v{version}/

Page 16: Design e boas práticas de api's com CSharp

Versionamento

Page 17: Design e boas práticas de api's com CSharp

SSL Sempre

Page 18: Design e boas práticas de api's com CSharp

Documentação

Page 19: Design e boas práticas de api's com CSharp

Ferramentas

Postman

Fiddler

Page 20: Design e boas práticas de api's com CSharp

GZIP

IIS

NGINX

OU =>

Page 21: Design e boas práticas de api's com CSharp

DTOs

Page 22: Design e boas práticas de api's com CSharp

Validação

Page 23: Design e boas práticas de api's com CSharp

Controllers simples

Page 24: Design e boas práticas de api's com CSharp

Async/Await

Page 25: Design e boas práticas de api's com CSharp
Page 26: Design e boas práticas de api's com CSharp

Links

• https://rodolfofadino.com.br

• https://letsencrypt.org/

• http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api

• https://hackernoon.com/restful-api-designing-guidelines-the-best-practices-60e1d954e7c9

• http://asp.net/

• https://www.draw.io

Page 27: Design e boas práticas de api's com CSharp

Obrigado!

Rodolfo Fadino [email protected]