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

Post on 23-Jan-2018

283 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

2010Central do assinante

ASP.NET MVCjQuery

Angular

{APIS}

{pagamento} {programa}

{tokenissuer}

{social}

230.000.000 req/mês

{prediction}

arquitetura infra

Consistência

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

Endpoints: Recursos / VERBOS

GET /posts

GET /posts/123

POST /posts

versusGET /getAllPosts

GET /getPostById

POST /createPost

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

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

Status Code

https://http.cat/

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

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}/

Versionamento

SSL Sempre

Documentação

Ferramentas

Postman

Fiddler

GZIP

IIS

NGINX

OU =>

DTOs

Validação

Controllers simples

Async/Await

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

Obrigado!

Rodolfo Fadino rodolfo@techfitapps.com

top related