Design e boas práticas de api's com CSharp
-
Upload
rodolfo-fadino-junior -
Category
Technology
-
view
283 -
download
0
Transcript of Design e boas práticas de api's com CSharp
![Page 1: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/1.jpg)
Design e boas práticas de APIs com C#@rodolfofadino
![Page 2: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/2.jpg)
![Page 3: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/3.jpg)
![Page 4: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/4.jpg)
2010Central do assinante
ASP.NET MVCjQuery
Angular
![Page 5: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/5.jpg)
![Page 6: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/6.jpg)
{APIS}
{pagamento} {programa}
{tokenissuer}
{social}
230.000.000 req/mês
{prediction}
![Page 7: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/7.jpg)
arquitetura infra
![Page 8: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/8.jpg)
Consistência
![Page 9: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/9.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/10.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/11.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/12.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/13.jpg)
Status Code
https://http.cat/
![Page 14: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/14.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/15.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/16.jpg)
Versionamento
![Page 17: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/17.jpg)
SSL Sempre
![Page 18: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/18.jpg)
Documentação
![Page 19: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/19.jpg)
Ferramentas
Postman
Fiddler
![Page 20: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/20.jpg)
GZIP
IIS
NGINX
OU =>
![Page 21: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/21.jpg)
DTOs
![Page 22: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/22.jpg)
Validação
![Page 23: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/23.jpg)
Controllers simples
![Page 24: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/24.jpg)
Async/Await
![Page 25: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/25.jpg)
![Page 26: Design e boas práticas de api's com CSharp](https://reader030.fdocument.pub/reader030/viewer/2022020314/5a670cec7f8b9a85028b4ac3/html5/thumbnails/26.jpg)
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