Um serviço da Web deve retornar uma mensagem de erro se receber parâmetros desconhecidos?

5

Eu tenho um serviço da web que permite recuperar usuários: http://example.com/users . Ele retorna uma lista de usuários.

Esse serviço aceita vários parâmetros ( age , gender ) para selecionar quais usuários devem ser recuperados. Exemplos:

  • http://example.com/users?age=34
  • http://example.com/users?gender=male

Esse serviço deve retornar uma mensagem de erro se o cliente estiver passando um parâmetro desconhecido ? Exemplo:

>>> GET http://example.com/users?cylinders=16 
<<< 400 Bad Request
<<< { 'message' : "Invalid parameter 'cylinders'" }

(Para mim, é claro que um serviço da web deve validar os parâmetros que recebe, mas o caso de parâmetros desconhecidos não está claro para mim)

    
por Silvan Mühlemann 21.08.2015 / 15:04
fonte

1 resposta

6

Tecnicamente, essa verificação requer uma etapa adicional. Você precisa listar todos os parâmetros e comparar essa lista com a lista de parâmetros permitidos. Então, se você decidir aceitar um parâmetro adicional, precisará alterar essa lista, exigindo ainda mais trabalho. Todo esse código tem que ser testado também.

Qual é o benefício? O benefício é que um programador que fez um erro de digitação como:

                             ↓↓
http://example.com/users?gendre=male

verá imediatamente uma mensagem de erro útil, em vez de receber a lista de todos usuários e se perguntando por que o filtro não está funcionando. Isso é ótimo, e gostaria que todas as APIs fossem úteis e amigáveis ao programador.

Cabe a você decidir se esse benefício vale o esforço de escrever códigos e testes adicionais.

Um dos casos em que você não deve se importar é quando você mesmo desenvolve as bibliotecas do cliente. Se você fornecer essas bibliotecas nas linguagens mais populares (Java, Python, Ruby, C ++, C #, ObjectiveC, PHP), pode não ser tão útil manipular o caso em que um parâmetro não suportado foi especificado.

    
por 21.08.2015 / 15:26
fonte