Skip to content
This repository has been archived by the owner on May 29, 2021. It is now read-only.

Latest commit

 

History

History
151 lines (107 loc) · 3.64 KB

t2.md

File metadata and controls

151 lines (107 loc) · 3.64 KB

TAREFA 2

A. O que é retornado e qual é o estado da tabela para cada uma das operações abaixo?

  • 1 GET myapi.com/person?id=1

Retorno:

exception, queryResult.id não existe

Tabela:

id name age
1 joao 26
2 maria 24
3 augusto 31
  • 2 POST myapi.com/person?name=maria&age=30

Retorno:

exception, queryResult.id não existe

Tabela:

id name age
1 joao 26
2 maria 24
3 augusto 31
  • 3 GET myapi.com/person?name=maria

Retorno:

exception, queryResult.id não existe

Tabela:

id name age
1 joao 26
2 maria 24
3 augusto 31

B. Existe alguma alteração necessária para que os resultados estejam de acordo com o comportamento esperado para uma API REST? Se houver, qual é a alteração e qual é o resultado esperado para cada uma das operações acima?

Sim, segue um diff com a mudança:

receiveHttpRequest​(request)
    if​ request.method ​is​ ​GET​ ​then
        return​ ​getPersonData​(request.queryParams)
    if​ request.method ​is​ ​POST​ ​then
-       return​ ​getPersonData​(request.queryParams)
+       return setPersonData​()

getPersonData​(queryParams)
    get database connection
    if​ queryParams.id ​is​ ​not​ ​empty​ ​then
-       queryResult = ​execute query​ ​“SELECT p.name, p.age FROM person p
-                                   WHERE p.id = :id”​ ​using​ ​“:id”​ ​as​ queryParams.id
+       queryResult = ​execute query​ ​“SELECT p.id, p.name, p.age FROM person p
+                                   WHERE p.id = :id”​ ​using​ ​“:id”​ ​as​ queryParams.id
    else if​ queryParams.name ​is​ ​not​ ​empty​ ​then
-       queryResult = ​execute query​ ​“SELECT p.name, p.age FROM person p
-                                   WHERE p.name like ‘%:name%’”​ ​using​ ​“:name”​ ​as​ 
-                                   queryParams.name
+       queryResult = ​execute query​ ​“SELECT p.id, p.name, p.age FROM person p
+                                   WHERE p.name like ‘%:name%’”​ ​using​ ​“:name”​ ​as​ 
+                                   queryParams.name
    if​ queryResult ​is​ empty​ ​then
        return​ ​“No result found”
    for each​ queryResult ​do
        result+=queryResult.id ​+​”,”​+​ queryResult.name ​+ ​”,”​+
                queryResult.age​+​NEWLINE
    return​ result

setPersonData​(queryParams)
    if​ queryParams.name ​is​ ​empty​ ​or​ queryParams.age ​is​ ​empty​ ​then
        return​ ​“Invalid request”
    get database connection
    execute query​ ​“INSERT INTO person (name,age) values (:name,:age)”​ ​using
                  “:name”​ ​as​ queryParams.name, ​“:age”​ ​as​ queryParams.age
    return​ ​“Success”

Resultado de A. para o código alterado:

  • 1 GET myapi.com/person?id=1

Retorno:

1,joao,26

Tabela:

id name age
1 joao 26
2 maria 24
3 augusto 31
  • 2 POST myapi.com/person?name=maria&age=30

Retorno:

Success

Tabela:

id name age
1 joao 26
2 maria 24
3 augusto 31
4 maria 30
  • 3 GET myapi.com/person?name=maria

Se 2 ocorreu antes de 3:

Retorno:

2,maria,24
4,maria,30

Tabela:

id name age
1 joao 26
2 maria 24
3 augusto 31
4 maria 30

Se 2 não ocorreu antes de 3:

Retorno:

2,maria,24

Tabela:

id name age
1 joao 26
2 maria 24
3 augusto 31