Prévia do material em texto
🔟 Adequação para restify 10 no pd-api-filters A partir do restify 9, os handlers de rota tiveram uma mudança em como eles são recebidos pelo restify. Funções Async devem ter apenas 2 parâmetros ou menos. (request, response) As funções async resolvem como promise e não utilizam mais a chamada do next, isso é feito pela api do restify. As regras para o retorno são: Se a função resolver sem nenhum valor, ela chama a próxima função da rota. Isso é feito com o next() pelo próprio restify); Se a função resolver com um string ela vai tentar trocar a rota para a string passada. Esse já era o comportamento anterior para funções síncronas) Se a função resolver com algo que não seja um string, ela chama o next com esse valor; Se a função for rejeitada com um Error, o next(err) é chamado; Se a função for rejeitada com algo diferente de tudo acima ela é encapsulada em um AsyncError e chama o next(err); Para a maioria dos nossos casos a alteração vai ser trocar o next() nas nossas funções para um return; e o next(err) para um throw; Funções Sync devem ter 3 parâmetros. (request, response, next) Adequação para restify 10 no pd-api-filters 1 https://github.com/restify/node-restify/blob/master/docs/guides/8to9guide.md#route-handler-api As funções sync resolvem como funções de callback e seguem o mesmo padrão de antigamente, onde a chamada do next/callback com sucesso ou com erro fica a critério da função criada. Essas verificações são feitas com um assert dentro do restify, utilizando o length da função para saber quantos parâmetros a função da rota tem. Alguns dos nossos filtros utilizam o partial do lodash para fixar parâmetros, essa função do lodash faz com que o length da função retornada seja 0 e com isso não passa na validação feita pelo restify. ⚙ Tabela de migração para restify 10 do pd-api-filters A migração vai ter um impacto grande nas nossas apis, pois a maioria está abaixo da versão 18 do node Onde costumamos atualizar o restify para o 10 Adequação para restify 10 no pd-api-filters 2 https://lodash.com/docs/4.17.15#partial https://www.notion.so/042be5f988eb4431aab76ab417b5d33b?pvs=21 https://www.notion.so/042be5f988eb4431aab76ab417b5d33b?pvs=21 https://www.notion.so/042be5f988eb4431aab76ab417b5d33b?pvs=21 Migração para a nova versão do pd-api- filters Para que uma api possa utilizar a nova versão da pd-api-filters é necessário que a versão do restify seja atualizada para 10. Os filtros se comportam da mesma maneira, não sendo necessárias alterações para o seu uso. Alguns filtros antigos e depreciados foram eliminados, para esses é necessário se adequar. Todos os filtros de GraphQL foram eliminados; O filtro authorizeInternal foi elimiando e deve ser substituído pelo authorizeApp. O filtro auhtorizeUserOrInternal foi eliminado e endpoint deve considerar ser público (authorize) ou privado (authorizeApp). ✈ Migrando do authorizeInternal para o authorizeApp Adequação para restify 10 no pd-api-filters 3 https://www.notion.so/Migrando-do-authorizeInternal-para-o-authorizeApp-cedf9afbcced424f9fa8e1c148780ec9?pvs=21 https://www.notion.so/Migrando-do-authorizeInternal-para-o-authorizeApp-cedf9afbcced424f9fa8e1c148780ec9?pvs=21 https://www.notion.so/Migrando-do-authorizeInternal-para-o-authorizeApp-cedf9afbcced424f9fa8e1c148780ec9?pvs=21