On a centralised exchange, what you are conducting is an on-chain transaction where you don't need to pay any fee for such transactions to be completed; only the trading fee is to be charged, which is always not up to 1% of your trading amount.
But on Uniswap, you are interacting with the network. First, you need to approve the token for it to be available for swap on Uniswap. With that approval alone, you will be charged for the gas fee, which is on Eth. And after that, before you can confirm your swap on Uniswap, you also need to pay another fee in order for the transaction to be completed. You pay a two-time fee before you can complete a swap on Uniswap.
I'd like to add little here. You don't always have to make approve transaction if you have already approved before for that contract address. For example, if you have approved $500 before on Uniswap, then you won't have to approve again for next swap transactions worth less than or equal to $500.
One should never set unlimited approvals as, if dapp gets hacked your approved amounts will be drained, and if you approved 'unlimited' your all tokens will get drained.
I always suggest people to never approve more than requirement of that transaction but in case of chains like Ethereum, approving transactions for each trade can be expensive, especially when you make frequent trades, so for such times you can approve what you are comfortable with so you don't have to make approve transactions again and again and save some on gas fees.
In case you want to revoke, this approvals can be revoked using tools like revoke cash or etherscan revoke tool.
@op Uniswap can't rip people off cause Uniswap doesn't earn anything from trades, there is 0.3% trade fee which is distributed to liquidity providers and what you pay as gas fee goes to the ethereum validators as an incentive to validate and some is burned.