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